Angular 4 : 绑定下拉列表与巨大的数据集(10000+ 记录)
Angular 4 : Binding dropdown with huge data set(10000+ records)
我正在尝试将 Angular 下拉菜单 (Angular 4+) 与 10000 多条记录绑定,它挂起了应用程序,我们无法执行任何其他操作 post那。
我只是在使用 *ngFor,同样
<select class="form-control browser-default col-md-12" name="attributeName" [(ngModel)]="attributeName">
<option *ngFor="let item of typeArray" [ngValue]="item">
{{item}}
</option>
</select>
我也尝试过 ng2-auto-complete 和 ng2-completer 等解决方案,但是当我开始输入时,应用程序挂起,因为数据量很大。
还有其他可行的解决方案吗?
您使用的组件非常无用。它们都将更改检测设置为默认值,这使它们变慢了。使用@RahulSwamynathan 的提示,我设法获得了 ng-select,它使用 OpPush 作为 CD 机制来工作,而且速度非常快。为了进行测试,我使用了 26000 个 UUID,速度下降并不明显。但似乎使它起作用的是 virtualScroll
选项设置为 true。
<ng-select [items]="arrayWithStrings" [virtualScroll]="true" [formControlName]="'name'"></ng-select>
如果您想要来自组件的样式,您必须在 style.css
文件中添加 @import "~@ng-select/ng-select/themes/default.theme.css";
。
我正在尝试将 Angular 下拉菜单 (Angular 4+) 与 10000 多条记录绑定,它挂起了应用程序,我们无法执行任何其他操作 post那。
我只是在使用 *ngFor,同样
<select class="form-control browser-default col-md-12" name="attributeName" [(ngModel)]="attributeName">
<option *ngFor="let item of typeArray" [ngValue]="item">
{{item}}
</option>
</select>
我也尝试过 ng2-auto-complete 和 ng2-completer 等解决方案,但是当我开始输入时,应用程序挂起,因为数据量很大。 还有其他可行的解决方案吗?
您使用的组件非常无用。它们都将更改检测设置为默认值,这使它们变慢了。使用@RahulSwamynathan 的提示,我设法获得了 ng-select,它使用 OpPush 作为 CD 机制来工作,而且速度非常快。为了进行测试,我使用了 26000 个 UUID,速度下降并不明显。但似乎使它起作用的是 virtualScroll
选项设置为 true。
<ng-select [items]="arrayWithStrings" [virtualScroll]="true" [formControlName]="'name'"></ng-select>
如果您想要来自组件的样式,您必须在 style.css
文件中添加 @import "~@ng-select/ng-select/themes/default.theme.css";
。