【问题标题】:material sort not working on some columns材料排序不适用于某些列
【发布时间】:2020-04-16 18:55:40
【问题描述】:

我正在为角材料垫表实现 sortModule,但由于某种原因,它对所有列都非常有效。当我尝试使用它进行排序时,会将表格返回到它的初始状态,但它没有排序。

垫表的html代码:

<mat-table [dataSource]="demandesData" matSort matSortActive="dateCreation" matSortDirection="desc" >

有效的列:

 <ng-container matColumnDef="typeDemande" >
        <mat-header-cell *matHeaderCellDef mat-sort-header >
          Type demande 
        </mat-header-cell>
        <mat-cell *matCellDef="let element">
           {{ element.typeDemande }} 
        </mat-cell>

 </ng-container>
<ng-container matColumnDef="dateCreation">
        <mat-header-cell *matHeaderCellDef mat-sort-header> date création </mat-header-cell>
        <mat-cell *matCellDef="let element">
           {{ convertDate(element.dateCreation) }} 
        </mat-cell>
</ng-container>

排序不适用于此列:

<ng-container matColumnDef="nom">
        <mat-header-cell *matHeaderCellDef  mat-sort-header> Nom du collaborateur</mat-header-cell>
        <mat-cell *matCellDef="let element">
           {{ element.user_ajout.nom }} 
        </mat-cell>
</ng-container>

表中的数据:

【问题讨论】:

  • 我认为它正在按预期工作,现在您正在根据数据进行排序。当您将根据您指定的列进行排序时,按升序排列,大写值在前,然后是小写,反之亦然。
  • 在图像中它按第三列排序,但是当我尝试第二列时它不起作用
  • 请创建堆栈闪电战

标签: angular sorting angular-material mat-table


【解决方案1】:

排序的列是作为数据行的直接子级的简单属性:dateCreationtypeDemand。它们也在各自的matColumnDef 属性中指定。中间列是对象user_ajout 内的属性,与matColumnDef 属性不匹配。这样的“深度”值不按默认比较器排序,但需要它们的自定义排序比较器。这称为sortingDataAccessor

【讨论】:

猜你喜欢
  • 2021-07-17
  • 1970-01-01
  • 2022-09-26
  • 2020-04-21
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多