【问题标题】:How to groupBy rows in Mat-Table如何在 Mat-Table 中按行分组
【发布时间】:2019-11-20 18:12:42
【问题描述】:

我有mat-Tablefilters,我想按columns 之一对表格进行分组。

我想让它成为一个可折叠的行,只显示你有多少“那种”类型,你可以按下它来查看该组中的每个row

我将分享我的 HTML(这是一个 sn-p 不是整个 HTML:

<mat-checkbox  class="CheckBoxClass" value="clientType" [(ngModel)]="isChecked  " disabled (change)="updateFilter('LQOCH_SHM_LOEZI_QTSR', clientType)" >{{clientType}}</mat-checkbox>
<br><br>
<mat-checkbox  class="CheckBoxClass" value="contSize" [(ngModel)]="isChecked" disabled (change)="updateFilter('AORKH_MCOLH', contSize)" >{{contSize}}</mat-checkbox>
<br><br>
<mat-checkbox  class="CheckBoxClass" value="storageType" [(ngModel)]="isChecked" disabled (change)="updateFilter('TAOR_QTSR_EBRI', storageType)" >{{storageType}}</mat-checkbox>
</div>


  <!-- Container Table -->
  <div>
    <mat-table [dataSource]="dataSource"  [hidden]="!show"  >
      <!-- Location  -->
      <ng-container matColumnDef="AITOR">
        <mat-header-cell *matHeaderCellDef> Location

        </mat-header-cell>
        <mat-cell *matCellDef="let container"> {{container.AITOR}} </mat-cell>
      </ng-container>
          <!-- Type  -->
          <ng-container matColumnDef="SOG_MCOLH">
            <mat-header-cell *matHeaderCellDef > Container Type</mat-header-cell>
            <mat-cell *matCellDef="let container"> {{container.SOG_MCOLH}}</mat-cell>

这是我的组件NgOnInit

 ngOnInit() {
    this.marinService.getAllContainers().subscribe((result) => {
     //Data
      this.dataSource = new MatTableDataSource(result);
      //Paginator
      this.dataSource.paginator = this.paginator;
      this.dataSource.filterPredicate = ((data: Container, filter: string): boolean => {
        const filterValues = JSON.parse(filter);
        let conditions = true;
        for (let filterKey in filterValues) {
          if (filterKey === 'SOG_MCOLH' || filterKey === 'LQOCH_SHM_LOEZI_QTSR' || filterKey === 'AORKH_MCOLH' || filterKey === 'TAOR_QTSR_EBRI') {
              conditions = conditions && data[filterKey].trim().toLowerCase().indexOf(filterValues[filterKey]) !== -1;
          }
          else if (filterValues[filterKey].length) {
            conditions = conditions && filterValues[filterKey].includes(data[filterKey].trim().toLowerCase());
          }
        }
        return conditions;
      });
      }
      )}

基本上我想要实现的是折叠并显示它有多少行的行,您可以按下它来打开行。

【问题讨论】:

    标签: html angular material-design angular7


    【解决方案1】:

    这不是开箱即用的角度材质。有一些解决方案可以自己做。 这是另一个给出一些方向的 SO 帖子:Angular Material mat-table Row Grouping

    那里提供的第二个StackBlitz 链接给出了使用分组行的表格的一个很好的示例。

    如果您的项目允许,您还可以查看默认包含行分组的其他库。

    【讨论】:

    • 这两个答案有问题。第一个不是我需要的,它只是将它们分成几组。第二个使用 filterPredict 并且我已经使用它,所以我不能再次使用它,因为它会产生重复问题。
    • 您可以修改filterPredict 以保留您的过滤条件并将它们与提供的示例中的条件合并。这样做不应该有重复问题。
    • 我真的不知道如何合并它们我没有太多经验做这样的事情
    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 2019-10-27
    • 2020-02-01
    • 2021-07-20
    • 2019-08-08
    相关资源
    最近更新 更多