在我的模板中,我click附加了事件侦听器:
<a class="link-component" href="{{displayURL}}" (click)="handleClick($event)">
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用 HostListener 或 Renderer2,如下所示:
this.clickListener = this.renderer.listen(this.htmlElement, 'click'........
this.clickListener();
Run Code Online (Sandbox Code Playgroud)
但是,就template绑定的事件处理程序而言,它们会在组件销毁时自动删除吗?
当角创建视图节点它侦听元件输出,例如click,focus,change等等,并增加了一次性回调disposables当前视图的阵列

现在,当需要销毁 view angular 时,只需运行所有一次性回调
export function destroyView(view: ViewData) {
if (view.state & ViewState.Destroyed) {
return;
}
execEmbeddedViewsAction(view, ViewAction.Destroy);
execComponentViewsAction(view, ViewAction.Destroy);
callLifecycleHooksChildrenFirst(view, NodeFlags.OnDestroy);
if (view.disposables) {
for (let i = 0; i < view.disposables.length; i++) {
view.disposables[i](); <================================
}
}
...
Run Code Online (Sandbox Code Playgroud)
因此,这种方式 angular 将删除当前视图的所有侦听器。
也可以看看:
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |