等待 Angular2 在 属性 更改后呈现
Wait for Angular2 to render following property change
我目前正在开发一个 Angular2 应用程序,我正面临一个关于 属性 变更和生命周期事件的问题。
例子
假设我有一个基于 属性 呈现的简单模板。我希望 #container
在渲染完成之前保持隐藏状态,然后将 visible
class 添加到它以使其显示。
<div id="container">
<p *ngFor="let value in values">
{{value}}
</p>
</div>
问题
问题是.visible
也定义了一个过渡,浏览器根本无法同时处理Angular的渲染和过渡,所以它很简单地停了一会儿,然后 #container
就会卡入。
我试过的
为过渡设置足够长的时间可以解决问题,但我不想更改它。
我也研究了 Angular's life cycle 个钩子,但其中 none 个似乎符合我的特定需要。
目标
我希望在 Angular 完成渲染 #container
的内容后收到通知,以便我可以添加 visible
class 而没有其他工作正在完成,并顺利过渡。
非常感谢任何帮助。
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).
我目前正在开发一个 Angular2 应用程序,我正面临一个关于 属性 变更和生命周期事件的问题。
例子
假设我有一个基于 属性 呈现的简单模板。我希望 #container
在渲染完成之前保持隐藏状态,然后将 visible
class 添加到它以使其显示。
<div id="container">
<p *ngFor="let value in values">
{{value}}
</p>
</div>
问题
问题是.visible
也定义了一个过渡,浏览器根本无法同时处理Angular的渲染和过渡,所以它很简单地停了一会儿,然后 #container
就会卡入。
我试过的
为过渡设置足够长的时间可以解决问题,但我不想更改它。
我也研究了 Angular's life cycle 个钩子,但其中 none 个似乎符合我的特定需要。
目标
我希望在 Angular 完成渲染 #container
的内容后收到通知,以便我可以添加 visible
class 而没有其他工作正在完成,并顺利过渡。
非常感谢任何帮助。
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).