要实现在Angular 7中动态对数组进行排序,可以使用以下步骤:
array: any[] = [
{ name: 'John', age: 25 },
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 20 }
];
sortBy: string = 'name'; // 默认按照名称排序
sortOrder: string = 'asc'; // 默认升序排列
Name
Age
{{ item.name }}
{{ item.age }}
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sortArray'
})
export class SortArrayPipe implements PipeTransform {
transform(array: any[], field: string, order: string): any[] {
if (!array || !field || !order) {
return array;
}
return array.sort((a, b) => {
let aValue = a[field];
let bValue = b[field];
if (typeof aValue === 'string') {
aValue = aValue.toLowerCase();
}
if (typeof bValue === 'string') {
bValue = bValue.toLowerCase();
}
if (order === 'asc') {
return aValue < bValue ? -1 : aValue > bValue ? 1 : 0;
} else {
return aValue < bValue ? 1 : aValue > bValue ? -1 : 0;
}
});
}
}
import { SortArrayPipe } from './sort-array.pipe';
@Component({
...
providers: [SortArrayPipe]
})
sort(field: string): void {
if (field === this.sortBy) {
this.sortOrder = this.sortOrder === 'asc' ? 'desc' : 'asc';
} else {
this.sortBy = field;
this.sortOrder = 'asc';
}
}
现在,当点击表头的列时,数组将按照所选字段和排序方式进行排序。