注意:
该系列由电影组成:
interface Movie {
title: string;
schedules: [
{
theater: string,
start: Date[] // array of dates such as "2017-06-18T17:20:00.000+02:00"
// already sorted in ascending order
}
]
}
用户可以按开始时间进行过滤,因此我设置了两个连续的管道:
<div *ngFor="movies | moviesFilter:filter_parameters | moviesSort">
...
过滤管道工作正常,但我花了最后3个小时(!)尝试编写排序管道。
我想按照最早的开始时间对过滤后的收藏品进行排序,例如按时间表[0] .start [0]
Pipe({
name: 'moviesSort',
pure: true
})
export class MoviesSortPipe implements PipeTransform {
transform(movies:movie[]):movie[] {
...
...
return sorted_movies;
}
}
答案 0 :(得分:3)
我的建议是远离管道进行分类。在常规业务逻辑中进行排序。
Angular团队在此解释: https://angular.io/guide/pipes#no-filter-pipe
Angular不提供用于过滤或排序列表的管道。 熟悉AngularJS的开发人员将这些知道为filter和orderBy。 Angular没有等价物。
这不是疏忽。 Angular不提供这样的管道,因为它们 表现不佳并防止侵略性缩小。