我如何获得一套#34;这个"到angular2打字稿组件中的变量?

时间:2017-04-07 20:10:58

标签: angular typescript

我有一个组件。在里面我有以下内容:

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?

2 个答案:

答案 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 (...) {
        ...
    }
}

显然,我不知道你的整个情况,但这样的事情对你有用。