如何按值Angular 2订购对象?

时间:2017-09-17 00:12:35

标签: angular

我有ul列表:

<ul>
<li [ngClass]="{'active': lang.def, 'show': opened}" *ngFor="let lang of languages | orderBy: 'def': 1">{{lang.name}</li>
</ul>

我尝试按值languages对对象def进行排序。因此,首先应该li元素def = 1

我试过这个pipe过滤器:

export class OrderBy {

  transform(array: any, orderBy: any, asc = true) {
    array.sort(function(x: any, y: any) {
      return (x.def > y.def) ? x.def : y.def;
    });

    return array;
  }
}

但它对我不起作用。

Json对象:

[ { "id": 2, "code": "ru", "active": true, "def": 0, "hide": false }, { "id": 1, "code": "az", "active": true, "def": 1, "hide": false } ]

1 个答案:

答案 0 :(得分:-1)

首先,这不是你如何使用管道,其次你的功能是错误的。这是解决方案

    export class OrderBy implements PipeTransform {
     transform(array: any, orderBy: any, asc = true) {
    array.sort(function(x: any, y: any) {
      return x.def - y.def;
    });

    return array;
  }
    }