如何导航/聚焦到Angular2中的下一个项目?

时间:2016-11-30 10:31:28

标签: jquery angular

我想使用箭头键聚焦到下一个项目 在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 个答案:

答案 0 :(得分:5)

当输入值更改为NgModule时,创建一个焦点指令(并在focus()中注册),该指令在主机元素上调用true

@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++;
        }

另见Angular 2: Focus on newly added input element