【发布时间】:2018-11-16 18:49:21
【问题描述】:
我正在尝试 removeEventListener 在我的角度组件中:Javascript removeEventListener not working
...
ngOnInit() {
document.addEventListener('visibilitychange', () =>this.handleVisibleState(), true);
}
ngOnDestroy() {
document.removeEventListener('visibilitychange', () => this.handleVisibleState(), true);
}
handleVisibleState() {
let vis = document.visibilityState === 'visible';
this.configsService.update_collab_visible(vis);
}
...
即使在ngOnDestroy () 之后,上面的addEventListener 也可以工作
如何在角度组件中从文档中解除可见性状态的绑定?
尝试 2
private visibilityChangeCallback: () => void;
ngOnInit() {
this.visibilityChangeCallback = () => this.handleVisibleState();
document.addEventListener('visibilitychange', this.handleVisibleState, true);
}
ngOnDestroy() {
document.removeEventListener('visibilitychange', this.handleVisibleState, true);
}
handleVisibleState() {
let vis = document.visibilityState === 'visible';
console.log(typeof this.configsService); // undefined
this.configsService.update_collab_visible(vis);
}
结果:
错误类型错误:无法读取未定义的属性“update_collab_visible”
【问题讨论】:
-
如果你在 Angular 中使用这个,你应该总是更喜欢 Renderer2 服务而不是直接修改 dom 节点。
标签: angular typescript angular-routing