如何使用特定条件对 angular ngx 数据表进行排序

How to sort angular ngx datatable with specific criteria

我正在使用 angular、ngx 数据 table 开发一个 table 视图,其中几乎没有可以排序的列。例如,我有一个名为“全奖”的列,其中显示添加了两个字段,即 row.price1 和 row.price2。当我点击列名时,我想根据全奖对 table 进行排序。但是由于全奖金额是计算出来的,所以不能直接拿到。

<ngx-datatable-column name="full price" prop="price1">

<ng-template let-row="row" ngx-datatable-cell-template>

{{row.price1+ row.price2}}

</ng-template>

</ngx-datatable-column>

以上给出的是用price1排序的方法。但是全奖如何排序呢?

谁能帮忙解决这个问题。谢谢。

您可以为列 https://swimlane.gitbook.io/ngx-datatable/api/column/inputs#comparator

传递自定义比较器函数

我们可以按照以下方式按照特定标准进行排序。

使用比较器函数,我们可以使用自定义逻辑比较两行。

 private compareByPrice(a, b): number {
   var priceA = a['price1'] + a['price2'] ;
   var priceB = b['price1'] + b['price2'] ;

   if (priceA > priceB) {
        return 1;
   }else if (priceA < priceB) {
        return -1;
   }else {
        return 0;
   }
 }

那么我们可以在html.

中将这个函数设置为比较器
<ngx-datatable-column prop="" name="Price" [comparator]="compareByPrice">
 <ng-template ngx-datatable-cell-template let-row="row">
  {{row.price1 + row.price2}}
 </ng-template>
</ngx-datatable-column>

注意:prop 值必须设置为 "" 以防止默认排序。