CdkVirtualScrollViewport 标头未修复

问题描述 投票:0回答:2

在我的角度应用程序中,我想将表格标题保持在固定位置并仅将滚动条显示到正文部分。

我正在使用 Angular 的 CdkVirtualScrollViewport 库来绘制表格内容。但它没有给我适当的结果。它显示标题本身的滚动条。请帮助我解决这个问题。下面附上详细信息。

Html页面

<cdk-virtual-scroll-viewport [itemSize]="25" [style.height.vh]="height" class="viewport">
    <table mat-table [dataSource]="dataSource" matSort aria-label="Elements" cdkDropListGroup class="table">

      <tr mat-header-row *matHeaderRowDef="columnsDef; sticky: true" class="column-header"></tr>
      <tr
        [style.backgroundColor]="hasTelematic(row) ? '#f3f3f3' : '#ffffff'"
        mat-row
        class="row-content"
        *matRowDef="let row; columns: columnsDef"
      ></tr>
    </table>
  </cdk-virtual-scroll-viewport>

当前结果

enter image description hereenter image description here

预期结果 - 标题应位于固定位置。

enter image description here

注意:我尝试了其他论坛中提供的解决方案,但它不起作用。

angular angular-material angular-cdk-virtual-scroll
2个回答
0
投票

我找到了一个解决方法

我放置了 2 个 cdk-virtual-scroll-viewreport。一个用于 header,另一个用于 body。对于标题,我将溢出-y 隐藏,这样滚动条就不会出现。

标题

<cdk-virtual-scroll-viewport [itemSize]="25" [style.height.vh]="12" class="viewport" style="overflow-y: hidden;">
    <table mat-table [dataSource]="dataSource" matSort aria-label="Elements" cdkDropListGroup class="table">
      <tr mat-header-row *matHeaderRowDef="columnsDef; sticky: true" class="column-header"></tr>
    </table>
  </cdk-virtual-scroll-viewport>  

身体

<cdk-virtual-scroll-viewport [itemSize]="25" [style.height.vh]="height" class="viewport">
    <table mat-table [dataSource]="dataSource" matSort aria-label="Elements" cdkDropListGroup class="table">
      
      <tr
        [style.backgroundColor]="hasTelematic(row) ? '#f7f7f7' : '#ffffff'"
        mat-row
        class="row-content"
        *matRowDef="let row; columns: columnsDef"
      ></tr>
    </table>
  </cdk-virtual-scroll-viewport>

0
投票

我通过在“column-header”类中添加以下 css 解决了上述问题 -

.table-row {
  position: sticky;
  top: 0;
  z-index: 10;
}
© www.soinside.com 2019 - 2024. All rights reserved.