我有一个组件。在里面我有以下内容:
constructor() {
this.something = "Hello";
}
document.addEventListener('click', doSomething());
function doSomething(e) {
console.log(this.something) // this is undefined
}
我想这样做,以便我可以访问doSomething(e)中的this.something。通常我只是在外面创建一个变量并使用var self = this;然后引用self.something来达到"你好"。不幸的是,在角度2中,我得到的错误是自我没有被定义等等。如何在我创建的事件监听器中访问this.something?
答案 0 :(得分:1)
你应该使用lambda函数来获得正确的这个
document.addEventListener('click', () => doSomething());
答案 1 :(得分:0)
Angular的另一个选项是@HostListener
函数装饰器,而不是直接向文档添加事件监听器。以下是一个示例。 More information
@HostListener('click', ['$event'])
onClick(event) : void {
event.stopPropagation();
if(...) {
console.log(this.something);
}
else if (...) {
...
}
}
显然,我不知道你的整个情况,但这样的事情对你有用。