2016-05-12 53 views
2

我有一個組件與項目的數組。Angular 2:ngFor在下降順序

每當用戶點擊一個按鈕,一個新的項目添加到這個數組。

該陣列在一個ngFor循環示出這種方式:

<li *ngFor="let log of Logs" class="list-group-item" [innerHTML]="log"</li> 

現在,新日誌的在列表的底部所示。我正在嘗試將新日誌顯示在列表頂部。

如何使用角度2來完成?

+1

您無法更改ngFor的順序。爲什麼不使用Array.unshift(newLog)將新日誌添加到數組? –

+0

謝謝@ Jean-PhilippeLeclerc,我不知道這種方法。 – TheUnreal

回答

4

您可以爲此創建一個自定義管道:

@Pipe({ 
    name: 'reverse' 
}) 
export class ReversePipe { 
    transform(arr) { 
    var copy = arr.slice(); 
    return copy.reverse(); 
    } 
} 

(請注意,我創建了數組的一個副本不更新源陣列)

,並使用這種方式:

<li *ngFor="let log of Logs | reverse" 
    class="list-group-item" [innerHTML]="log"</li> 

不要忘記將此管道添加到您使用它的組件的pipes屬性中。

+1

不應該將管道添加到「管道」而不是「指令」中? –

+0

你完全正確!感謝您指出了這一點。我更新了我的答案... –

+0

您還必須導入'PipeTransform'並說'ReversePipe實現PipeTransform' –