2017-06-18 44 views
0

注意的第一个值排序对象的集合中的角管:通过分次嵌套数组

  • 我是一个业余的开发仍然有很多东西需要学习。
  • 我不认为这是重复的:其他一些问题是相关的(我试图调整建议的解决方案)但没有成功。由于电影的属性是只读的,因此必须在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 
    } 
    ] 
} 

用户可以通过启动时间进行筛选,因此,我建立了两个consecutives管道:

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

回答

3

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

的角度解释了球队在这里: https://angular.io/guide/pipes#no-filter-pipe

角不进行过滤或排序列表提供管道。 熟悉AngularJS的开发人员将这些视为过滤器和orderBy。 Angular中没有等价物。

这不是疏忽。 Angular不提供这种管道,因为它们的性能不佳并且可以防止进攻性的缩小。