javascript - Angular HostListener 同一组件的多个实例

标签 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;
    }
  }

当我按下向上箭头键或向下箭头键时,页面上组件的所有实例都会触发事件。我怎样才能只为焦点元素触发事件?

最佳答案

我认为最好创建一个指令并在要聚焦的元素中调用它。

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

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

在元素中调用

<input focusItem>  

关于javascript - Angular HostListener 同一组件的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47993873/

相关文章:

javascript - 将 JSON 数据与 JavaScript 对象匹配

javascript - Node : Global variables across multiple files

javascript - 如何访问路径元素的高度和宽度?

javascript - jquery - 仅捕获文本输入中的新值

javascript - 如何通过函数调用查找 JavaScript 变量的传递用法?

javascript - Angular:如何将自定义指令中的索引变量共享给另一个指令?

css - 如何在CSS中实现material design motion

javascript - 有人可以解释以下示例中 ...spread 运算符的使用吗?

angular - 为什么 Angular ngFor 组件共享相同的变量

Angular 2 两个索引或两个组件对于前端和管理 url 不同