angular - 角度数据表排序仅适用于 1 列?
问题描述
排序适用于 Id 列,但它不适用于第二列,为什么会这样?
<mat-table #detailsTable #detailsSort="matSort" [dataSource]="details" matSort>
<ng-container matColumnDef="id">
<mat-header-cell *matHeaderCellDef mat-sort-header> Id </mat-header-cell>
<mat-cell *matCellDef="let detail"> {{detail.id}} </mat-cell>
</ng-container>
<ng-container matColumnDef="invoiceCurrencyNetValue">
<mat-header-cell *matHeaderCellDef mat-sort-header> Net value </mat-header-cell>
<mat-cell *matCellDef="let detail"> {{detail.attributes.invoiceCurrencyNetValue}} </mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="this.detailsColumns; sticky: true"></mat-header-row>
<mat-row *matRowDef="let row; columns: this.detailsColumns;" matRipple class="element-row"></mat-row>
</mat-table>
这就是我设置数据并在.ts
文件中排序的方式:
details = new MatTableDataSource(details.data);
details.sort = this.detailsSort;
这是列声明:
detailsColumns = [
'id', 'invoiceCurrencyNetValue'
];
解决方案
很可能是因为您attributes
是一个对象,并且排序需要一个实际值。
例如 detail.id 可以按 id 值排序,但是 detail.attributes.invoiceCurrencyNetValue 不能排序,因为它是一个对象,而不是实际值。
你可以从这里开始:Angular Material 2 DataTable Sorting with nested objects
作为参考,您可以使用“ sortingDataAccessor
”扩展您的排序功能
推荐阅读
- excel - VBA Implements / Inheritance
- r - 在 dplyr 中的 group_by 之后过滤组内的行
- c# - 尝试编写只读数据库 sqlite Wpf inno setup
- c# - 带有事件处理程序的 Autofac 单实例
- vb.net - ms-access "Great Than" 或相等查询
- google-bigquery - 从数组中删除空值/空值
- python - 批量归一化导致训练和推理损失之间的巨大差异
- c# - 将所有 POST 请求路由到 1 个接收 POST 正文的 APIController 方法
- c++ - 将数组传递给 lambda 函数
- python - SkLearn - 为什么 LabelEncoder().fit 仅适用于训练数据