例如:我需要输出一个列表.每个项目都有一个(click)处理程序,项目对象就像参数一样.
<ul>
<li *ngFor="let item of myList">
<button (click)="clickHandler(item)"></button>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
此列表将经常动态更新:我将在Scroll上加载新项目,或通过搜索过滤列表.
对于每个项目,Angular都会添加一个事件监听器!
题:
它可能是列表中的很多项,因此很多eventListeners将一直连接和断开连接.
有没有办法应用委托模式只有一个eventListener实时?
我如何像在本机JS中使用的removeEventListener一样,在Angular 2中删除@Hostlistener()?
示例: 页面中有很多dropDown组件。当dropDown打开时,我想在document click事件上添加处理程序,并在dropDown关闭时删除处理程序。
原生JS:
function handler(){
//do something
}
document.addEventListener('click', handler); // add handler
document.removeEventListener('click', handler); // remove handler
Run Code Online (Sandbox Code Playgroud)
角度2:
@HostListener('document: click') onDocumentClick () {
// do something
}
// How can I remove handler?
Run Code Online (Sandbox Code Playgroud)