Angular HostListener同一组件

时间:2017-12-27 14:27:59

标签: javascript angular

我有一个名为ListComponent的组件,其中包含以下代码。

  @HostListener("document:keydown", ["$event"])
  handleKeyEvent(event: KeyboardEvent) {
    switch(event.keyCode) {
      case 38: //up arrow
        this.selectPreviousItem();
        break;
      case 40: //down arrow
        this.selectNextItem();
        break;
    }
  }

当我按向上箭头或向下箭头键时,事件将触发页面上组件的所有实例。如何仅针对焦点元素触发事件?

1 个答案:

答案 0 :(得分:2)

我认为创建一个指令并在要关注的元素中调用它会更好。

@Directive({
    selector: 'focusItem', 
    })

  export class MyDirective {
    constructor() { }
    @HostListener('focus', ['$event.target'])
      onFocus(target) {
        console.log("Focus called 1");
      }
  }

在元素

中调用它
<input focusItem>