首页 文章

Angular 2.删除@Hostlistener()

提问于
浏览
3

如何在Angular 2中删除 @Hostlistener() ,就像在Native JS中使用 removeEventListener 一样?

Example: 我的页面中有很多dropDown组件 . 当dropDown打开时,我想在文档点击事件上添加处理程序,并在dropDown关闭时删除处理程序 .

Native JS:

function handler(){
  //do something
}
document.addEventListener('click', handler); // add handler
document.removeEventListener('click', handler); // remove handler

Angular 2:

@HostListener('document: click') onDocumentClick () {
    // do something
  }

  // How can I remove handler?

2 回答

  • 3

    你可能需要手动添加/删除监听器

    // subscribe
    this.handler = this.renderer.listen('document', "click", event =>{...});
    
    // unsubscribe
    this.handler();
    
  • 3

    Julia Passynkova答案几乎是正确的 .

    只需删除“document”周围的引号,如下所示:

    // subscribe
    this.handler = this.renderer.listen(document, "click", event =>{...});
    
    // unsubscribe
    this.handler();
    

相关问题