2017-12-02 80 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 –