Angular 防止角度HostListener传播到父组件 问题

Angular 防止角度HostListener传播到父组件 问题,angular,angular-changedetection,Angular,Angular Changedetection,我的一个组件具有绑定设置: @HostListener('window:resize',['$event'])回调($event){ //D3Js任务在这里… } 当前,当侦听器被调用时,父组件将重新评估其模板,就像父组件确实响应了某个子组件的输出一样 但是,从侦听器执行的任务不需要从父组件进行任何更新 我希望监听器能够执行,而不会导致父组件收到某种通知 在这种情况下,是否可以在角度的某个地方防止此类冒泡行为 尝试 无论是$event.stopPropagation()还是$event.sto

我的一个组件具有绑定设置:

@HostListener('window:resize',['$event'])回调($event){
//D3Js任务在这里…
}
当前,当侦听器被调用时,父组件将重新评估其模板,就像父组件确实响应了某个子组件的
输出一样
但是,从侦听器执行的任务不需要从父组件进行任何更新

我希望监听器能够执行,而不会导致父组件收到某种通知

在这种情况下,是否可以在角度的某个地方防止此类冒泡行为

尝试 无论是
$event.stopPropagation()
还是
$event.stopImmediatePropagation()
都没有帮助,可能是因为这种行为与角度内部结构有关。
将HostListener声明保留为空(注释掉包含的指令)不会改变任何我认为HostListener声明是罪魁祸首的东西

我当前的解决方案是在组件构造函数中直接创建一个本机DOM事件的可观察事件(不依赖角度):

this.onResizeSub=可观察
.fromEvent(窗口“调整大小”,null,null)
.订阅(()=>{…});
);

注意:使用Angular v4.4.2,在所有地方更改推送策略的检测。

不幸的是,Angular当前似乎不支持这一点。有一个功能请求,但看起来我们不会很快看到它:

执行顺序很模糊-同一元素上的事件传播到多个侦听器的顺序目前尚未定义。这是目前的设计

您的问题是,向侦听器公开的事件是真正的DOM事件,对提供的事件调用stopImmediatePropagation()会停止执行在此元素上注册的其他侦听器。但是,由于通过Angular注册的所有侦听器仅由一个dom侦听器代理(出于性能原因),因此在此事件上调用stopImmediatePropagation没有任何效果