【发布时间】:2018-02-21 08:07:27
【问题描述】:
我在 Angular 5 中设置了一段时间后隐藏元素的超时时间:
this.showElement = true;
setTimeout(function () {
console.log('hide');
this.showElement = false;
}, 2000);
但是,这不会更新视图。 console.log 给了我一个输出,所以超时肯定有效。
我发现在 Angularjs 中,您需要调用 $apply 才能开始摘要,所以我猜我只需要找到 Angular 5 的等效方法即可。
【问题讨论】:
-
您不需要更改检测甚至超时,只需将 this.showElement 双向绑定到元素本身的 *NgIf ,它就会按需删除并显示它。当心超时使用,它可能会消耗资源,如果你想让它成为通用的,它会杀死你的应用程序。
-
要添加的一点是,在 Angular 1.x 中,您可以使用 $timeout 服务。在 Angular 2+ 中,没有 $timeout 服务。在您希望保持组件/服务上下文的词法范围的地方,首选/推荐使用箭头函数。
标签: javascript angular asynchronous