/ / Ordenar por fecha Angular 2 tubo - javascript, angular

Ordenar por fecha Angular 2 tubo - javascript, angular

Aquí está mi código:

<div *ngFor="let conv of lender.conversation | orderBy" class="conv-single">
{{conv.date | date: "dd/MM/yyyy | j"}} - {{conv.text}}
</div>

Tengo objeto como este:

[{
date: somedate,
text: "text1"
}
...]

Y aquí está mi pedido, por pipa:

@Pipe({
name: "orderBy"
})
export class OrderByPipe implements PipeTransform {

transform(value: any, args?: any): any {
let newVal = value.sort((a: any, b: any) => {
let date1 = new Date(a.date);
let date2 = new Date(b.date);

if (date1 > date2) {
return 1;
} else if (date1 < date2) {
return -1;
} else {
return 0;
}
});

return newVal;
}

}

El problema es que siempre recibo elementos en el mismo orden en que alguien sabe cuál es el problema.

Respuestas

5 para la respuesta № 1

Se recomienda encarecidamente no utilizar dichos tubos de acuerdo con la documentación angular. Ver https://angular.io/guide/pipes#appendix-no-filterpipe-or-orderbypipe

Puedes probar algo como esto:

ngOnInit() {
this.sortedItems = items.sort((a: any, b: any) =>
new Date(a.date).getTime() - new Date(b.date).getTime()
);
}