通过子子嵌套数组

时间:2017-06-18 16:35:41

标签: javascript angular sorting pipe

注意:

  • 我是一位业余爱好者,还有很多需要学习的地方。
  • 我不认为这是重复的:其他一些问题是相关的(我试图调整建议的解决方案),但没有成功。由于电影的属性是只读的,因此必须在Angular管道中使用它也会更加困难。

该系列由电影组成:

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;
  }
}

1 个答案:

答案 0 :(得分:3)

我的建议是远离管道进行分类。在常规业务逻辑中进行排序。

Angular团队在此解释: https://angular.io/guide/pipes#no-filter-pipe

  

Angular不提供用于过滤或排序列表的管道。   熟悉AngularJS的开发人员将这些知道为filter和orderBy。   Angular没有等价物。

     

这不是疏忽。 Angular不提供这样的管道,因为它们   表现不佳并防止侵略性缩小。