在角度6中对一组物体排序

时间:2018-11-21 09:03:52

标签: angular typescript sorting angular5 angular6

我在排序对象数组时遇到问题

对象看起来像

enter image description here

我想要做的就是让* ngFor循环按group_id属性对其进行排序。

  

component.html

<ul *ngFor="let list of selectgid | groupid">
  <li>{{list}}</li>
</ul>
  

pipe.ts

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
 name: 'groupid'
 })
export class GroupidPipe implements PipeTransform {

transform(array: Array<any>): Array<any> {
  if (array !== undefined) {
  array.sort((a: any, b: any) => {
    if (a.group_id < b.group_id) {
      return -1;
    } else if (a.group_id > b.group_id) {
      return 1;
    } else {
      return 0;
    }
  });
}
  return array;
}
}

我尝试实现此代码,但似乎无法正常工作。我的代码有什么问题,或者有什么需要做的?

1 个答案:

答案 0 :(得分:0)

假设selectgid是包含图像中所示值的对象数组,请尝试对.ts文件中ngOnInit()方法内的数据进行排序,如下所示:

this.selectgid.sort((a, b) => {
    if (a.group_id < b.group_id) {
        return -1;
    } else if (a.group_id > b.group_id) {
        return 1;
    } else {
        return 0;
    }
})

在.html页面上,您需要这样指定Object的键:

<ul *ngFor="let list of selectgid">
    <li>{{list.group_id}}</li>
    <li>{{list.permission_list}}</li>
</ul>