我想使用箭头键聚焦到下一个项目
在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();
}
}
答案 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', []);
}
}
}
添加选择器以及将true
或false
传递给指令时应该聚焦的绑定:
<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++;
}