angular - Angular 4 - ngFor 下拉/选择选项在 IE11 上非常慢,如何优化 ngDoCheck 执行?
问题描述
我们有一个下拉列表,可以接收要列出的 3K+ 数据。
<select class="form-control" (change)="onSelect($event.target.value)" [(ngModel)]="employeeJobCode.JobCode.Id" name="JobCode" [ngClass]="{'alert-danger': JobCode.errors && (JobCode.dirty || JobCode.touched)}" #JobCode="ngModel" required>
<option [value]=""></option>
<option *ngFor="let dropDownValue of jobCodeListData" [value]="dropDownValue.Id">{{ dropDownValue.FullName }}</option>
</select>
当我们展开下拉列表时,它会呈现列表中的所有 3K+ 项。在 IE11 上完成此操作需要 40 多秒。
在检查分析器数据时,我们发现 NgForOf.prototype.ngDoCheck 花费了将近 36 秒,如图所示 -
ngDoCheck 这么慢的原因可能是什么?我们如何优化这种性能?
解决方案
推荐阅读
- php - 如何存储管理员帐户可以在 PHP 中更改的应用程序设置?
- makefile - 为什么不让合并模式规则成为先决条件,我该如何做到这一点?
- css - How can I remove the white-space around the numbers on a JS timer?
- python - 为什么在调整窗口大小时 tkinter.Tk.update() 会阻塞?
- java - 无法使用 Jar 文件找到或加载主类。原因是 bcprov-jdk15-133
- python - 如何在 Windows 平台的 PCI 配置寄存器(空间)中访问或获取数据(比特流)
- javascript - 关于自定义 React modal 组件的一个小问题
- ruby-on-rails - 我如何知道要编辑哪个文件以及从该错误消息中执行什么操作?
- java - 如何用单个正则表达式模式替换过多的 SQL 通配符?
- pandas - 使用 .loc 和 slice 设置时,日期时间列强制为 int