2017-12-02 8 views
0

我正在使用Angular2。我有一個div:setTimeOut for elementRef

<div class="saved" #saved> 
    <p>Saved</p> 
    <i class="fa fa-check" aria-hidden="true"></i> 
</div> 

我訪問它在TS:

@ViewChild("saved") public saved: ElementRef; 

接下來我顯示該塊:

this.saved.nativeElement.style.display = 'block'; 

然後,我想幾秒鐘後隱藏它,但是這部分代碼不正確:

setTimeout(this.closeSavedWindow, 3000); 

其中

closeSavedWindow() { 
    this.saved.nativeElement.style.display = 'none'; 
    } 

的錯誤是

TypeError: this.saved is undefined

+0

這有內部和外部的功能,兩個不同的上下文可以調試此使用的console.log(本) closeSavedWindoe() –

回答

0

嘗試setTimeout(this.closeSavedWindow.bind(this), 3000);

0

你所面臨的問題是由於在上下文中改變。在closeSavedWindow()函數內部,這指的是窗口對象,並且不包含任何名爲saved的屬性。因此錯誤。

這可以很容易地通過結合對功能方面的價值調用時,它被固定..

setTimeout(this.closeSavedWindow.bind(this), 3000); 
+0

Plunkr我在測試時使用.. https://plnkr.co/edit/JGtZYUN2xkQoJDM9n7BS?p=preview –