我有一张桌子,想在Angular中对其进行排序
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Create Date</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of items | orderBy: order:reverse:'case-insensitive':comparator ">
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td>{{ item.createDate }}</td>
</tr>
</tbody>
</table>
和数据
this.items = [
{
id: 1,
name: meow,
createDate: Tue Mar 20 14:15:23 MDT 2018
},
{
id:2,
name: meow2,
createDate: Fri Mar 23 14:15:23 MDT 2018
},
{
id:3,
name: meow2,
createDate: Sun Mar 20 14:15:23 MDT 2013
}
]
和table.component.ts
comparator(value: any, args?: any): any {
let newVal = value.sort((a: any, b: any) => {
let date1 = new Date(a.date);
let date2 = new Date(b.date);
if (date1 > date2) { return 1; }
else if (date1 < date2) { return -1; }
else { return 0; }
});
return newVal;
}
到目前为止,我正在使用ngx-sort-pipe https://github.com/VadimDez/ngx-order-pipe
它可以完美地对数字和字符串进行排序。
但是,它也会按字母顺序对日期进行排序。
根据我的数据格式,我不仅可以按数字和字符串排序,还可以按日期排序。
有没有办法按不同类型进行排序,例如数字,字符串和日期格式?
提前谢谢。
答案 0 :(得分:0)
尝试将比较器更改为
comparator(value: any, args?: any): any {
if(this.order=='createDate'){
let newVal = value.sort((a: any, b: any) => {
let date1 = new Date(a.date);
let date2 = new Date(b.date);
if (date1 > date2) { return 1; }
else if (date1 < date2) { return -1; }
else { return 0; }
});
return newVal;
} else {
return value.sort();
}
}