elementRef的setTimeOut

时间:2017-12-02 20:21:08

标签: javascript angular typescript

我正在使用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未定义

2 个答案:

答案 0 :(得分:0)

尝试setTimeout(this.closeSavedWindow.bind(this), 3000);

答案 1 :(得分:0)

您面临的问题是由于环境的变化。在closeSavedWindow()函数中,这指的是 Window对象,并且不包含任何名为saved的属性。因此错误。

这可以通过在调用函数时绑定函数上下文的值来轻松修复。

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