角度:悬停在菜单上会触发表中的更改



请参阅:https://stackblitz.com/edit/angular-ivy-ytwi1v
在这里,一旦我们打开菜单并将鼠标悬停在菜单选项上,就会触发表单元格使用的函数调用。控制台登录悬停几次
所以,我的问题是:

  1. 为什么会发生这种情况
  2. 如何控制/避免它

编辑:我添加了一个视觉变化来突出这个问题。

您的问题是角度变化检测。所有模板操作监听器,如单击悬停等,最后调用ApplicationRef.tick((。它在组件树中运行更改检测循环。

当检测到更改时,每个组件模板中的所有函数和getter都将被再次调用。这就是当您将鼠标悬停在菜单项上时,边框颜色会发生变化的原因。

解决方案是在元素接收后进行此边界计算,否则,您在每个更改检测周期都要进行此计算,这可能会降低您的应用程序性能。

示例:https://stackblitz.com/edit/angular-ivy-u4mjby?file=src%2Fapp%2Fapp.component.ts

最新更新