NGX数据表未按年份排序日期

时间:2018-11-15 14:46:53

标签: javascript angular date ngx-datatable

我正在使用NGX数据表,除日期外,我的所有数据均正确排序。 NGX的内置排序似乎是从左到右排序,因此它按月/日排序,但不按年份排序。我正在尝试使用这种格式('MM-DD-YYYY h:mm A')进行排序。如果我更改为这种格式('YYYY-MM-DDh:mm A'),则可以正常使用。我看到有人说要使用管道日期以角度表示日期,所以我尝试了

{{value | date:'MM-DD-YYYY h:mm A'}}

但是那也不起作用。它仍然没有排序的岁月。因此,它将对月份和日期进行排序,但对年份却是复杂的。有人知道解决办法吗?如果没有,是否可以将自定义排序添加到仅一列?

我当前正在使用此配置,以允许内置排序对我的所有数据进行排序。

 [sorts]="[{prop: 'status', dir: 'desc'}]">

我认为,如果我无法对日期进行排序,则需要为日期列创建自己的排序。有没有一种方法可以保留除一个列以外的所有列的自定义排序,并将我自己的排序添加到该列?任何帮助,将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:0)

我想出了如何获得想要的功能,以防其他人也遇到此问题。我有来自后端的数据,将日期作为YYYY-mm-dd传递,然后在Angular端,我正在使用其日期管道

{{value | date:'MM-DD-YYYY h:mm A'}}

获取我想要的MM-DD-YYYY格式。看起来只要输入的值是第一年,它就可以正确地对其进行排序。

答案 1 :(得分:0)

这不是最佳方法,但是解决此问题的唯一方法是编写自己的比较器。

 <ngx-datatable-column prop="datumKnj" [comparator]="datumKnjComparator" name="Datum knj.">
  <ng-template ngx-datatable-cell-template let-value="value">
    {{value | date : 'dd.MM.yyyy'}}
  </ng-template>
</ngx-datatable-column>

compare函数如下所示:

  datumKnjComparator(propA, propB, rowA, rowB) {
    console.log('Sorting Comparator', propA, propB, rowA, rowB);
    // do something with rowA and rowB objects.
    if (rowA.datumKnj < rowB.datumKnj) { return -1; }
    if (rowA.datumKnj > rowB.datumKnj) { return 1; }
  }