angular - 使用 primeng p-datatable 自定义排序不起作用

标签 angular sorting primeng primeng-datatable

我在使用 PrimeNG 的 Angular 4 应用程序中有数据表,我想按名为 received_at 的日期排序

我已经创建了 stackblitz 并发布了我在此尝试过的代码

stackbiltz link - PrimeNG datatable

位于 PrimeNG 数据表网格下方

<p-dataTable [value]="interactionHistories" sortField="received_at">
  <p-column field="case_number" header="Case Number"></p-column>
  <p-column field="received_at" sortable="custom" (sortFunction)="sortByDate($event)" header="Case Date">
    <ng-template let-col let-car="rowData" let-ri="rowIndex" pTemplate="body">
      <span>{{car[col.field] | date: 'yyyy-mm-dd hh:mm:ss '}}</span>
    </ng-template>
  </p-column>
  <p-column field="status" header="Status"></p-column>
</p-dataTable>

谁能帮我吗?

最佳答案

我遇到了类似的问题,我使用临时数组解决了它。我对该数组中的行进行了排序,重新初始化了原始数组并用临时行填充了它。

sortByDate(event) {
  const tmp = this.interactionHistories.sort((a: any, b: any): number => {
            if (event.field) {
                return a[event.field] > b[event.field] ? 1 : -1;
            }
        });

  if (event.order < 0) {
      tmp.reverse();
  }

  const thisRef = this;
  this.interactionHistories = [];
  tmp.forEach(function (row: any) {
      thisRef.interactionHistories.push(row);
  });

}

可能有更好的解决方案,但它确实有效。

Working Stackblitz

关于angular - 使用 primeng p-datatable 自定义排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512221/

相关文章:

angular - 带有可观察对象的 ionic 存储服务

android - 如何根据日期和时间对我的 RecyclerView 进行排序

json - jq unique_by 选择排序后的第一个元素

css - PrimeNG Accordion 无法正常工作和显示

javascript - Angular - 如何防止 RxJs fromEvent 中的 XSS 攻击?

AngularX ngSwitch 始终使用 ngSwitchDefault

angular - p-dialog onHide 在 Angular 2 组件中不起作用 - primeng

javascript - 通过组件传递 ng-template

google-app-engine - 我应该如何在我的 Angular 2 项目中包含外部 .js 文件?

r - 如何在R中对 'paired'向量进行排序