Angular 角度指令拦截器点击事件

Angular 角度指令拦截器点击事件,angular,angular8,Angular,Angular8,我想直接点击事件取消 @Directive({ selector: '[shortConfirm]' }) export class ShortConfirmDirective implements OnInit{ @HostListener("click", ["$event"]) public onClick(event: any): boolean { console.info('2222'); event.cancelBubble=true;// ie下

我想直接点击事件取消

@Directive({
  selector: '[shortConfirm]'
})
export class ShortConfirmDirective implements OnInit{
  @HostListener("click", ["$event"])
  public onClick(event: any): boolean {
    console.info('2222');
    event.cancelBubble=true;// ie下
    event.stopPropagation();
    return true;
  }
}
我试过了。取消气泡=真


事件取消失败

您可以尝试在捕获阶段拦截事件并取消它

试试这个

@Directive({
  selector: '[shortConfirm]'
})
export class ShortConfirmDirective implements OnInit {

  constructor(
    private _elementRef: ElementRef,
  ) { }

  ngOnInit() {
    fromEvent(this._elementRef.nativeElement, 'click', {
      capture: true,
    }).subscribe((e: MouseEvent) => {

      e.stopImmediatePropagation();
    });
  }
}

这是fail,元素click事件首先执行,例如stopImmediatePropagation();这是最后一次处决