Angular 角度-如何检测更改后浏览器已完成重新渲染

Angular 角度-如何检测更改后浏览器已完成重新渲染,angular,browser,grid,html-rendering,Angular,Browser,Grid,Html Rendering,我有一个基于网格的表格,每个项目都应用了“订单”,以允许动态排序 触发网格顺序更改时,我希望有一个事件告诉我浏览器已完成对整个网格的重新排序 我尝试了ngAfterViewChecked,但如果我有1000个网格项,那么这似乎有点太早了 我这里有一个stackblitz演示。或者,也可以使用本机javascript解决方案 更新 我发现了另外两个源,它们更接近于检测何时发生更改,而不是何时更改实际完成渲染。如果将浏览器CPU性能限制为6倍,则在看到浏览器中的任何更改之前,事件仍会记录 使用An

我有一个基于网格的表格,每个项目都应用了“订单”,以允许动态排序

触发网格顺序更改时,我希望有一个事件告诉我浏览器已完成对整个网格的重新排序

我尝试了ngAfterViewChecked,但如果我有1000个网格项,那么这似乎有点太早了

我这里有一个stackblitz演示。或者,也可以使用本机javascript解决方案

更新

我发现了另外两个源,它们更接近于检测何时发生更改,而不是何时更改实际完成渲染。如果将浏览器CPU性能限制为6倍,则在看到浏览器中的任何更改之前,事件仍会记录

  • 使用Angular事件

  • 使用

  • 这是最新的Stackblitz


    当您通过使用
    渲染器2直接应用所有更改时,所有更改应在从
    #applyOrder()
    返回后完成。这是由浏览器同步完成的


    如果希望显式事件收到已完成渲染的通知,可以添加
    @Output()
    声明。请参阅以供参考。

    谢谢您的回复,但我认为这并不完全正确。。。如果查看控制台日志,可以看到函数在20毫秒后完成,而视图明显滞后。更新了StackBlitz并在回调中添加了
    debugger
    语句,该语句在
    appliedOrder
    @输出绑定发出时被调用。因此,如果您在Chrome或Firefox上打开DevTools并单击切换按钮,您将点击断点并注意到,所有更新的订单样式都已呈现且可见。我还添加了一个额外的console.log,以显示所应用的订单样式立即可见:在应用订单样式之前和之后,我将输出第一个Child渲染的X位置。您是否有任何不清楚的地方?如果没有,你可以考虑接受答案吗?对不起,你的答案没有回答我的问题,因为我想知道DOM什么时候完成了渲染的改变。如果将浏览器性能限制为6倍,您会注意到在视口中发生任何更改之前,所有事件都会记录下来。与此同时,我做了一些研究,更新了我的问题。