我需要在触发后立即删除轮事件监听器。我尝试了以下操作,但未删除事件监听器。

export class HomeComponent implements OnInit {

    constructor() {}

    ngOnInit() {
       document.querySelector("#section-one").addEventListener("wheel", () => this.myFunction1(), true);
    }

    myFunction1() {
      alert();
      document.querySelector("#section-one").removeEventListener("wheel", this.myFunction1, true);
      console.log("Done!");
    }
}

有什么建议么?

最佳答案

根据 the docs :

你的代码不应该工作。
可能的修复方法如下:

wheelHandler: any;

ngOnInit() {
    this.wheelHandler = this.myFunction1.bind(this);
    document.querySelector("#section-one").addEventListener("wheel", this.wheelHandler, true);
}

myFunction1() {
    alert();
    document.querySelector("#section-one").removeEventListener("wheel", this.wheelHandler, true);
    console.log("Done!");
}
其中 wheelHandler 是一个函数,引用相同的处理程序实例
有关更多 Angular 方式解决方案,请参阅
  • How to listen for mousemove event on Document object in Angular

  • 但 AFAIK useCapture 参数尚不支持。所以它总是 false

    关于javascript - 如何在 angular 4 中删除事件监听器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46906763/

    10-09 14:20