2016-05-12 2 views
2

У меня есть компонент с массивом элементов.Угловой 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

Не следует ли добавлять трубы в 'pipe', а не' директивы'? –

+0

Ты точно прав! Спасибо за указание на это. Я обновил свой ответ ... –

+0

Вы также должны импортировать 'PipeTransform' и сказать' ReversePipe реализует PipeTransform' –

Смежные вопросы