【发布时间】:2020-01-28 20:51:53
【问题描述】:
我是 Angular 框架的新手,我遇到了用于显示分层数据的嵌套 *ngFor 循环的性能问题。
- *ngFor - 每个项目的 10 个项目(级别 1)扩展面板
- *ngFor 10 Items (Level 2) 网格列表显示内容
- *ngFor 5 Items (Level 3) 5 个按钮切换和 2 个选择控件
为避免加载所有数据,我将根据当前打开的第 1 级面板设置第二个 *ngFor 的集合。
当我展开面板或尝试按下按钮切换时,整个页面非常慢。 注意:我不会使用这些操作更改集合。
为了调试,我在每个 ngFor 中放了一个函数来返回集合。我看到每次按下按钮切换时,angular 都会多次重做所有 *ngFor 指令中的所有迭代。
我不明白为什么每次更改控件时都需要进行所有迭代。在这种情况下如何提高性能?
重现stackblitz上的问题的代码示例!
【问题讨论】:
-
使用trackby功能,请查看:angular.io/api/common/NgForOf#description
-
感谢@Chellappan,但是当我更改控件时,angular 仍在执行所有 *ngFor 迭代。如果我理解正确,当您添加/删除集合中的项目时会使用 trackBy。