You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular Material表格日期列排序失效,使用sortingDataAccessor仍未解决

解决Angular Material表格日期列排序失效问题

你的核心问题是排序时获取日期的字段路径与实际数据结构不匹配:

  • HTML中日期列渲染的是 element.versions[0].createDate
  • 但TS代码的sortingDataAccessor里,你写的是item.createDate,根本取不到正确的日期值,自然排序失效

修正后的TS代码

ngAfterViewInit() {
    this.dataSource = new MatTableDataSource(this.dataSource);
    this.dataSource.sort = this.sort;
    this.dataSource.sortingDataAccessor = (
      item: any,
      property: any
    ): Date | string => {
      switch (property) {
        case 'created':
          // 修正字段路径,和HTML里的数据源保持一致
          return new Date(item.versions?.[0]?.createDate || 0);
        default:
          return item[property];
      }
    };
}

额外注意事项

  • 加上可选链?.和默认值|| 0,避免versions为空或versions[0]不存在时抛出错误
  • 确保createDate是合法的日期格式(比如YYYY-MM-DD或ISO格式),否则new Date()会返回Invalid Date,导致排序异常
  • 确认组件中已经正确注入MatSort实例:
    @ViewChild(MatSort) sort!: MatSort;
    

内容的提问来源于stack exchange,提问作者Nikola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:20:30