constructor() {
document.addEventListener('someEvent', function(event) {
console.log(event.data);
this.test(); //throws error - this.test() is undefined
});
}
如果我将其移动到ngOnInit
,它可以正常工作:
ngOnInit() {
this.test(); //works ok
}
该函数只是组件上的一个方法,在构造函数之后定义:
public test(){
console.log('TEST');
}
我的最终目标是每次在全局窗口上触发事件时someEvent
运行组件的test()
方法(事件来自原始 javascript,即 document.dispatchEvent(event, {'detail': evntPayload});
我该如何实现此目的?
使用箭头函数保持this
指向当前类实例
constructor() {
document.addEventListener('someEvent', (event) => { // <<< changed
console.log(event.data);
this.test(); //throws error - this.test() is undefined
});
}
以下链接应该可以解决您需要的问题。只需绑定到不同的事件。
角度窗口调整大小事件