2017-04-07 53 views
0

我有一個組件。我有以下內容:如何在angular2 typescript的組件中爲變量設置「this」?

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.some?

+0

「doSomething」定義在哪裏?請提供您發佈的代碼的上下文。上面的代碼片斷會引發語法錯誤。因爲'constructor'是一個類的外部。 – estus

回答

1

您應該使用lambda函數來得到正確的使用角度這個

document.addEventListener('click',() => doSomething());

+0

「doSomething」的詞彙範圍並不明顯。它有一個很好的機會不能'糾正這個'。這個問題在發佈的時候並不夠具體,壞的問題導致了不好的答案。 – estus

0

另一種選擇,而不是直接添加事件監聽到文檔,是@HostListener功能裝飾。以下是一個示例。 More information

@HostListener('click', ['$event']) 
onClick(event) : void { 

    event.stopPropagation(); 

    if(...) { 
     console.log(this.something); 
    } 
    else if (...) { 
     ... 
    } 
} 

很明顯,我不知道你的整個情況,但是像這樣的東西可能對你有用。

相關問題