当前位置: 首页 > 知识库问答 >
问题:

如何在Angular2中导航/聚焦到下一项?

惠诚
2023-03-14

我想使用箭头键关注下一个项。
在keydown事件处理程序中,我使用event.currenttarget.nextsibling访问下一个项。
还有其他方法可以实现这一点吗?
在事件处理程序中,我想使用JQuery来实现这一点。这怎么做?

<ul>
    <li *ngFor = "let work of works" tabindex="-1" 
        (keydown.ArrowDown)="handleKeyEvent( $event, 'Arrow Down' )">
        <div class="guide-label">
            <div>{{work.cd}}</div>
            <div>{{work.name}}</div>
        </div>
    </li>
</ul>
export class WorkComponent {
    ...
    handleKeyEvent(event: Event): void {

        event.currentTarget.nextSibling.focus();
        event.preventDefault();
    }
}

共有1个答案

弓胜泫
2023-03-14

创建一个focus指令(并将其注册到ngmodule),当输入值更改为true时,该指令调用宿主元素focus():

@Directive({
  selector : '[myFocus]'
})
class MyFocus {
  constructor(public renderer: Renderer, public elementRef: ElementRef) {}

  @Input()
  set myFocus(value :boolean) {
    if(value) {
      this.renderer.invokeElementMethod(
          this.elementRef.nativeElement, 'focus', []);
    }
  }
}

添加选择器和一个绑定,当指令被聚焦时,该绑定将truefalse传递给指令:

<li *ngFor = "let work of works let idx=index" tabindex="-1" 
    [myFocus]="idx == focusedIdx" (keydown.ArrowDown)="handleKeyEvent( $event, 'Arrow Down' )">

更新关键事件的focusedidx:

       handleKeyEvent(event: Event): void {
            this.focusedIdx++;
        }
 类似资料:
  • 我正在尝试打开导航栏菜单,在悬停和焦点。这就是我所尝试的:但是在悬停状态下它工作得很好,但是在聚焦状态下菜单列表应该打开。 当屏幕阅读器使用键盘选项卡按钮时,我需要打开菜单列表,就像在悬停时打开一样。 JS: 小提琴链接:演示

  • 问题内容: 我正在编写一个小型游戏,其中一个JFrame负责主游戏,另一个JFrame负责显示得分。问题是,当我完成构建它们时,分数JFrame总是最终集中精力!我试过调用scoreDisplay.toFront(),scoreDisplay.requestFocus(),甚至: 有什么办法可以使这项工作吗?预先感谢,约翰·穆拉诺 问题答案: 您是否考虑过将得分设置在与游戏框架相同的框架中? 其他

  • 问题内容: 更新后,我已将角度包版本从2.4.10更新到4.0.0,导航时出现以下错误。 而且我更改了webpack.common.js配置。见下面的代码 问题答案: 我已经解决了这个问题。我添加了一个新包:。 我导入了模块:

  • 我正在写一个自动热键脚本,它可以摆弄一些Photoshop窗口和控件。 我需要能够解除当前焦点控件(比如Edit3)的焦点,这样之后就没有控件有焦点了(我可以解释为什么必要时我需要这么做,但这似乎无关紧要,我只需要解除所有控件的焦点)。 AHK的ControlFocus命令不提供这样的选项。 我尝试使用这样的Windows消息: 但它什么都没用。相比之下,另一种方法的效果与预期一致,并将重点放在控

  • 我正在使用android中的新导航架构组件,在移动到一个新的片段后,我被困在清除导航堆栈中。 示例:我在loginFragment中,当我导航到home片段时,我希望该片段从堆栈中清除,这样当用户按下back按钮时,他就不会返回到loginFragment。 我正在使用一个简单的navhostfragment.findnavcontroller(Fragment).navigate(r.id.ho

  • 问题内容: 我有输入要显示格式化的数字。通常,当它没有焦点时,应该显示一个格式化的字符串,例如’$ 50,000.00’。但是当它具有焦点时,它应该显示原始值,例如用于编辑的50000。 有内置功能吗?谢谢! 问题答案: 这是一条指令(),它可以执行您想要的操作。 请注意,只有元素的显示值才被格式化(模型值将始终为未格式化)。 这个想法是您为和事件注册侦听器,并根据元素的焦点状态更新显示值。 另请