我目前正在开发 Angular2 应用程序,并且面临有关属性更改和生命周期事件的问题。
例子
假设我有一个基于属性呈现的简单模板。我希望 #container
在渲染完成之前保持隐藏状态,然后向其添加 visible
类以使其显示。
<div id="container">
<p *ngFor="let value in values">
{{value}}
</p>
</div>
问题
问题是 .visible
也定义了一个过渡,浏览器根本无法同时处理 Angular 的渲染和过渡,所以它只是简单地停了一会儿,然后#container
刚刚插入。
我尝试过的
为过渡设置足够长的时间可以解决问题,但我不想更改它。
我也调查了Angular's life cycle钩子(Hook),但它们似乎都不符合我的特定需求。
目标
我想在 Angular 完成渲染 #container
的内容后收到通知,这样我就可以添加 visible
类,而没有其他工作正在进行,并顺利过渡。
非常感谢任何帮助。
最佳答案
Mark Rajcok 的评论让我开始思考,我查找了在下一个可能的时刻采取行动的不同方法,包括 setTimeout
、requestAnimationFrame
,最后是 setImmediate
。
我决定接受 setImmediate
,因为它似乎是将操作推迟到下一个浏览器滴答的最直接方法。
请注意,setImmediate
目前只是一个提案,我只能使用它,因为 core-js
已经实现了它。它甚至可能在未来不会成为标准。
https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate
Note: This method is not expected to become standard, and is only implemented by recent builds of Internet Explorer and Node.js 0.10+. It meets resistance both from Gecko (Firefox) and Webkit (Google/Apple).
关于javascript - 等待 Angular2 在属性更改后呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37616287/