角度:stopImmediatePropagation()在按下键盘时不起作用

时间:2018-07-27 16:42:58

标签: angular keyboard-events

我在directive字段中附加了input,两者都在监听keydown事件,在某些情况下,我想停止在{{1 }}。调用directive并不能真正阻止传播。

示例:

指令

event.stopImmediatePropagation();

带有输入字段的组件

import { Directive, HostListener } from '@angular/core';

@Directive({ selector: '[myDirective]' })
export class MyDirective {
  constructor() { }

  @HostListener('keydown', ['$event']) 
  keydownHandler(event) {
   event.stopImmediatePropagation(); // seems to be not working!!
   console.log('[my-directive.ts]: keydownHandler', event)
  }
}

我不明白为什么import { Component, Input } from '@angular/core'; @Component({ selector: 'hello', template: ` <input type="text" myDirective (keydown)="keydownHandler($event)"> ` }) export class HelloComponent { @Input() name: string; keydownHandler(event) { console.log('[hello.component.ts]: keydownHandler', event) } } 不起作用,有什么想法吗?是否有另一种方法可以避免使用event.stopImmediatePropagation();字段在keydown上触发component

1 个答案:

答案 0 :(得分:1)

Angular优化了事件处理程序,如果您对同一事件有两个或多个处理程序,它将仅添加一个侦听器并将结果分配到所有组件。这意味着stopImmediatePropagation现在取决于角度调度顺序。您可以添加日志记录或调试执行顺序。