2017-06-18 42 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不提供這種管道,因爲它們的性能不佳並且可以防止進攻性的縮小。