angular - MatTableDataSource 如何获取数据集的排序顺序?
问题描述
假设我有一个mat-table
with mat-sort-header
andmatSort
来启用排序,并且 with [dataSource]="tableDetails"
。将数据提取到 中后sampleData
,我使用以下内容初始化表:
this.tableDetails = new MatTableDataSource(this.sampleData);
我有如下示例数据,并且是默认顺序:
sampleData =
[
{'id':1, 'name':'item 1'},
{'id':2, 'name':'item 2'},
{'id':3, 'name':'item 3'}
]
我可以用this.tableDetails.data[0]
. 现在,如果我使用按降序mat-sort-header
对表格进行排序id
,显示的第一项将是{'id':3, 'name':'item 3'}
,但this.tableDetails.data[0]
仍返回{'id':1, 'name':'item 1'}
. 我注意到 mat-sort-header 不会改变数据源的原始顺序。关于如何获得排序顺序的任何想法?
解决方案
在 dataSource 上,您有一个 sortData 方法,可用于获取已排序的表数据。
MatTableDataSource sortData 方法
根据 MatSort 的状态获取数据数组的排序副本。在对过滤的数据进行更改或从 MatSort 发出排序更改后调用。默认情况下,该函数检索活动排序及其方向,并通过使用sortingDataAccessor 检索数据来比较数据。对于数据排序的自定义实现,可能会被覆盖。
this.dataSource.sortData(this.dataSource.data, this.dataSource.sort)
推荐阅读
- python - 如何使用按钮单击访问 jupyter Notebook 单元?
- reactjs - 材料 ui 表,我想创建可重用的组件,每个页面中都有不同的 json 结构。我可以为一个可重用组件发送行数据吗
- haskell - 如何在 Haskell 中创建函数的字符串表示。如何以花哨的方式打印功能?
- c - 如何根据用户输入检查文件是否存在
- laravel - Laravel Manager 将目标分配给用户,并且用户在目标时间内针对目标进行销售我想根据目标获取销售数据
- java - 我不应该能够从子类访问方法吗?
- python - Discord.py 错误处理机器人缺少权限
- python - 如何在 python selenium 中处理父子表
- javascript - 在将 mongodb 数据库渲染为 PUG 填充时未定义
- r - R:在网格上评估和绘制函数