首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setTimeOut for elementRef

setTimeOut for elementRef
EN

Stack Overflow用户
提问于 2017-12-02 20:21:08
回答 2查看 284关注 0票数 0

我在用Angular2。我有一个div:

代码语言:javascript
复制
<div class="saved" #saved>
    <p>Saved</p>
    <i class="fa fa-check" aria-hidden="true"></i>
</div>

我在ts中访问它:

代码语言:javascript
复制
@ViewChild("saved") public saved: ElementRef;

接下来,我将显示这个块:

代码语言:javascript
复制
this.saved.nativeElement.style.display = 'block';

然后我想在几秒钟后隐藏它,但是我的代码的这一部分是不正确的:

代码语言:javascript
复制
setTimeout(this.closeSavedWindow, 3000);

哪里

代码语言:javascript
复制
closeSavedWindow() {
    this.saved.nativeElement.style.display = 'none';
  } 

错误是

TypeError: this.saved未定义

EN

回答 2

Stack Overflow用户

发布于 2017-12-02 20:26:06

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

票数 0
EN

Stack Overflow用户

发布于 2017-12-02 20:38:43

你所面临的问题是由于环境的变化。在closeSavedWindow()函数中,它引用窗口对象,并且不包含任何名为saved的属性。因此出现了错误。

通过在调用函数时绑定函数的上下文值,可以很容易地解决这个问题。

代码语言:javascript
复制
setTimeout(this.closeSavedWindow.bind(this), 3000);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47612187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档