angular - 如何在简单的单选垫选择中使用 cdkVirtualScroll

标签 angular angular-material

出于性能原因,我正在尝试将 cdkVirtualScrollmat-select 一起使用。

<mat-select formControlName="name">
    <cdk-virtual-scroll-viewport itemSize="42" [style.height.px]="5*42">
        <mat-option *ckdVirtualFor="let option of ($options | async)>{{option.value}}</mat-option>
    </cdk-virtual-scroll-viewport>
</mat-select>

这有效但有多个问题:

  1. 关闭选择时,所选选项不可见。仅当它是前 5 个选项之一时才可见。
  2. 溢出时截断不起作用

堆栈 Blitz :https://stackblitz.com/edit/angular-12xmbp-s9pund?file=src/app/cdk-virtual-scroll-overview-example.html

我该如何解决这些问题?

最佳答案

对于第一个问题,将 itemSize 设置为 1 似乎可以解决问题。

 <cdk-virtual-scroll-viewport
      itemSize="1"
      [style.height.px]="5*42"
      minBufferPx="400"
      maxBufferPx="400"
    >

我在这里找到了这个解决方案:https://github.com/angular/components/issues/24943

对于截断,这在你的 stackblitz 中修复了它:

::ng-deep .cdk-virtual-scroll-content-wrapper {
  width: 0;
}

创建的包装器宽度太大。当您将宽度设置为 0 时,最小宽度将接管。您可以设置最大宽度。

这是一个 fork 且有效的 stackblitz:

https://stackblitz.com/edit/angular-12xmbp-rwnjuf?file=src/app/cdk-virtual-scroll-overview-example.html

关于angular - 如何在简单的单选垫选择中使用 cdkVirtualScroll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73958739/

相关文章:

android - Ionic Live Reload Capacitor Gradle 构建 - 失败!找不到 Java 运行时

javascript - 如何在 Ionic 2 TypeScript 项目中包含外部 Javascript 库?

javascript - 线性模式在具有单独组件的 mat-h​​orizo​​ntal-stepper 中不起作用

angular - "export ' ɵɵ注入(inject) ' was not found in ' @angular/core'

angular - Compodocs + Storybook + Angular 9 中的空文档.json

angular - 使用箭头键,在 Angular 中使用 keyup

css - 如何区分 mat-select 样式和 mat-paginator mat-select 样式?

angular - 导入 Angular Material 对话框时编译错误

javascript - AngularJS md-tabs 的更改索引根本没有效果

javascript - 访问 Angular 2 应用程序的路由时如何在 URL 中保留查询字符串参数?