我记得阅读过下面的摘录从一个博客。
$timeout将新事件添加到浏览器事件队列(渲染引擎已经在此队列中),以便它将在新的超时事件之前完成执行。
我想知道在angular/ javascript中是否有比使用
setTimeout(() => {
// do something after dom finishes rendering
}, 0);
以在DOM完全完成任务(如更新 *ngFor并在页面上呈现结果)时执行代码。
我记得阅读过下面的摘录从一个博客。
$timeout将新事件添加到浏览器事件队列(渲染引擎已经在此队列中),以便它将在新的超时事件之前完成执行。
我想知道在angular/ javascript中是否有比使用
setTimeout(() => {
// do something after dom finishes rendering
}, 0);
以在DOM完全完成任务(如更新 *ngFor并在页面上呈现结果)时执行代码。
3条答案
按热度按时间zqdjd7g91#
您可以尝试
ngAfterViewInit
生命周期钩子,它是按时间顺序最后一个单次触发生命周期钩子。https://angular.io/guide/lifecycle-hooks
它的工作原理与
ngInit
非常相似,但是它在视图和子视图初始化之后才触发。如果需要每次DOM完成时都触发的函数,可以尝试
ngAfterViewChecked
或ngAfterContentChecked
。y1aodyip2#
**问题:**有时在加载了一些部分之后,我需要运行一个函数。(我想扩展一个输入和一个标签)
ngAfterViewInit和路由更改检测没有解决我的问题
**解决方案:**我制作了一个组件
然后我把它用在html的任何地方
即使我的html有
*ngIf=""
,我也会在那个标记中使用app-inline-label
,这样就解决了所有的问题实际上,它将在渲染
<app-inline-label> </app-inline-label>
时触发lvmkulzt3#
如果函数要渲染多次,则
ngAfterContentChecked
将更可取。