首页 > 解决方案 > 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 秒,如图所示 -

ngFor 在 IE11 中运行缓慢

ngDoCheck 这么慢的原因可能是什么?我们如何优化这种性能?

标签: angularperformanceinternet-explorer-11

解决方案


推荐阅读