我在使用 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);
});
}
可能有更好的解决方案,但它确实有效。
关于angular - 使用 primeng p-datatable 自定义排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512221/