我正在使用Angular2。我有一个div:
<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未定义
答案 0 :(得分:0)
尝试setTimeout(this.closeSavedWindow.bind(this), 3000);
答案 1 :(得分:0)
您面临的问题是由于环境的变化。在closeSavedWindow()函数中,这指的是 Window对象,并且不包含任何名为saved的属性。因此错误。
这可以通过在调用函数时绑定函数上下文的值来轻松修复。
setTimeout(this.closeSavedWindow.bind(this), 3000);