问题
用addEventListener绑定事件后,messageListener内的this指向改变为window,导致 this.showPreview = false;执行错误。如何重新获取当前实例?
(不能在ngOnInit里使用bind(this),因为使用后removeEventListener会失效)
代码
ngOnInit(): void {
window.addEventListener('message', this.messageListener);
}
messageListener(e) {
this.showPreview = false;
}
ngOnDestroy() {
window.removeEventListener('message', this.messageListener);
}
可以用lambda表达式,比如
但是,angular不应该直接使用window对象注册原生事件,而应该使用@HostListener('window:message',['$event'])