【发布时间】:2019-10-21 16:04:40
【问题描述】:
我已将 Material 方法用于我的供应商数据的下拉菜单。供应商中有超过 12000 个,即 12k + 数据。使用 mat-option,我需要使用 *ngFor,这需要花费大量时间。这使我的应用程序非常缓慢且无响应,就像挂起一样。什么是有效的解决方案?解决方案可能是下拉或其他不同的方法。
<mat-form-field fxFlex.gt-sm>
<mat-label>Vendor</mat-label>
<mat-select formControlName="VendorId">
<mat-option *ngFor="let vendor of vendorData" [value]="vendor.VendorId">
{{ vendor.VendorName }}
</mat-option>
</mat-select>
</mat-form-field>
【问题讨论】:
-
我的第一个想法是包含 12,000 个项目的下拉菜单有多有效?如果这是一个要求,那么我明白,我去过那里。但是您是否可以使用自动完成功能?这可能比让用户滚动浏览 11,999 项以找到他们正在寻找的 1 项更容易使用。 material.angular.io/components/autocomplete/overview
-
它的渲染占用了所有时间。我建议您研究角度无限滚动解决方案。
-
@shadowfox476 我需要通过 api 调用实现自动完成,并且在文档中只有要搜索的本地列表。您是否有或可以为此目的建议一些链接?我想通过首先调用 api 并将数据保存在列表中来实现它。然后按照文档所示进行操作。这是好方法还是有其他更好的方法?请有任何建议
-
我只是从 api 中提取整个列表并按照他们的示例进行操作。否则,您的 api 将必须支持基于输入中的当前值的过滤