angular - 如何在 Angular6 中为 ngx-datatable 列编写自定义排序方法?

标签 angular sorting datatable angular6 ngx-datatable

我在我的 Angular6 项目中定义了一个 ngx-datatable,如下所示,我需要在表中按以下顺序对国家/地区进行排序。

代码-

<ngx-datatable [rows]="rows" [limit]="20" [rowHeight]="35" [headerHeight]="35" [footerHeight]="35" [scrollbarV]="true"
[columnMode]="'force'" class="material">
<ngx-datatable-column prop="name" name="name">
    <ng-template ngx-datatable-cell-template let-value="value">
        {{value}}
    </ng-template>
</ngx-datatable-column>
<ngx-datatable-column prop="country" name="country">
    <ng-template ngx-datatable-cell-template let-value="value">
        {{value}}
    </ng-template>
</ngx-datatable-column>

Order of the rows should be -  England > America > Russia

我可以按字母顺序对列进行排序,如下所示。

[sorts]="[{prop: 'country'}"

但我需要按照上面的顺序对它们进行排序。行按此顺序排列。 (英格兰>美国>俄罗斯)

请帮助我在 ngx-databale 中进行排序或使用自定义比较器。谢谢

stackblitz中的示例代码

最佳答案

您可以创建自定义比较器函数,如下所示

  order = ['England', 'America', 'Russia'];

this.rows.sort((propA, propB) => {
       let indexA = this.order.indexOf(propA.country);
       let indexB = this.order.indexOf(propB.country);

       if (indexA > indexB) {

          return 1;
        } else if (indexA < indexB) {

          return -1;
        }

      return 0;
    });

这是演示 - https://stackblitz.com/edit/ngx-column-reordering-bl4kdh 希望这有帮助

关于angular - 如何在 Angular6 中为 ngx-datatable 列编写自定义排序方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59423049/

相关文章:

javascript - ngx-leaflet Angular 2 +,更喜欢Canvas : true don't render canvas

algorithm - 堆排序伪代码算法

unix - unix中以下三个排序命令有什么区别?

javascript - 获取数据表单元格的元素

javascript - *ngFor 在获取新数据之前正在更新

angular - 使用 Angular Material 和 Safari 从另一个对话框打开对话框

angular - 如何在 Angular 2 中获取与 ElementRef 关联的组件的引用

c# - 更改 C# 排序行为

jquery - 数据表之外的分页控制

.net - 如何将数据集/数据表从 Tomcat 中继到 .NET 应用程序?