gpt4 book ai didi

angular8 - @angular/material 自动完成的性能问题

转载 作者:行者123 更新时间:2023-12-04 15:29:09 26 4
gpt4 key购买 nike

我正在使用 Angular/Material Autocomplete。加载数据到 Autocomplete 会遇到严重的性能问题,比如渲染需要大约 30 秒,需要 10 多秒才能稳定,数据是从服务器加载的,从服务器接收数据非常快。为了解决这个问题,我使用了 cdkVirtualScroll,在向下滚动到结尾并再次单击文本框后,它在滚动其加载值后加载空弹出窗口。

html

   <mat-form-field>
<input type="text" placeholder="Pick one" aria-label="Number" matInput [matAutocomplete]="auto">
<mat-autocomplete #auto="matAutocomplete" (opened)="panelOpened()">
<cdk-virtual-scroll-viewport itemSize="48" style="height: 240px" minBufferPx="96" maxBufferPx="144">
<mat-option *cdkVirtualFor="let option of options" [value]="option">
{{option}}
</mat-option>
</cdk-virtual-scroll-viewport>
</mat-autocomplete>
</mat-form-field>

TS
export class AppComponent  {
options: string[] = [];

@ViewChild(CdkVirtualScrollViewport, {static: true}) viewport: CdkVirtualScrollViewport;

constructor() {
for (let i = 0; i < 10000; i++) {
this.options.push("#"+i);
}
}

panelOpened() {
if (this.viewport) {
this.viewport.checkViewportSize();
}
}
}

检查前: https://stackblitz.com/edit/angular-7vcohv?file=src%2Fapp%2Fapp.component.html

最佳答案

我不确定 mat-autocomplete 有多少选项旨在支持,但我对提高性能的建议是:

  • 仅在用户键入至少 2 个字符后才填写自动完成功能。
  • 实现服务器端搜索并在获得较少数量的选项后填写自动完成选项。
  • 如果您认为这是 mat-autocomplete 组件的问题,您可以在 @angular/material repository 中打开一个问题。 .
  • 关于angular8 - @angular/material 自动完成的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56353921/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com