冻结的菜单菜单(角材料)

时间:2019-05-12 07:22:47

标签: javascript angular typescript angular-material

我在其他组件中有一个mat-menu(由角材料制成)。在mat-menu中选择一个选项时,我将选定的值发射到其他组件,接收到发射值的组件将该值绑定到管道的参数。管道方法使用lodash的深层副本。我在菜单内的选项之间切换时,mat-menu冻结,并且UI缓慢。我还尝试了JSON.parse(JSON.stringify())进行深层复制。我的数据是嵌套的(四个级别)。迟钝的原因是什么?

1 个答案:

答案 0 :(得分:0)

角材料Mat-Menu触发多重变化检测。即使在悬停时也会触发更改检测。当您执行四次多级链接时。您正在使用四个*ngFor来创建级联的更改检测。

您可以通过添加trackBy来进行验证。

临时解决方案是将每个对象分成不同的部分,并使用OnPush Changedetection分层策略。

永久性解决方案是修复角材料mat-menu组件中的变化检测。

使用TrackByonPush ChangeDetection,可以提高性能。