Eine Pipe nimmt Daten als Eingabe auf und wandelt sie in eine gewünschte Ausgabe um. Fügen Sie diese Pipe-Datei hinzu: orderby.ts
in Ihrem /app
Ordner.
orderby.ts
import { Pipe,PipeTransform } from "angular2/core";
@Pipe({
name: "orderby"
})
export class OrderByPipe implements PipeTransform {
transform(array:Array<any>, args?) {
if(array) {
let orderByValue = args[0]
let byVal = 1
if(orderByValue.charAt(0) == "!") {
byVal = -1
orderByValue = orderByValue.substring(1)
}
console.log("byVal",byVal);
console.log("orderByValue",orderByValue);
array.sort((a: any, b: any) => {
if(a[orderByValue] < b[orderByValue]) {
return -1*byVal;
} else if (a[orderByValue] > b[orderByValue]) {
return 1*byVal;
} else {
return 0;
}
});
return array;
}
}
}
Importieren Sie in Ihre Komponentendatei (app.component.ts) die gerade hinzugefügte Pipe mit: import {OrderByPipe} from './orderby';
Fügen Sie dann *ngFor="#article of articles | orderby:'id'"
in Ihre Vorlage ein, wenn Sie Ihre Artikel nach ID in aufsteigender oder orderby:'!id'"
absteigender Reihenfolge sortieren möchten .
Wir fügen einer Pipe Parameter hinzu, indem wir dem Pipe-Namen einen Doppelpunkt (:) und dann den Parameterwert folgen
Wir müssen unsere Pipe im Pipes-Array des @ Component-Dekorators auflisten. pipes: [ OrderByPipe ]
.
app.component.ts
import {Component, OnInit} from 'angular2/core';
import {OrderByPipe} from './orderby';
@Component({
selector: 'my-app',
template: `
<h2>orderby-pipe by N2B</h2>
<p *ngFor="#article of articles | orderby:'id'">
Article title : {{article.title}}
</p>
`,
pipes: [ OrderByPipe ]
})
export class AppComponent{
articles:Array<any>
ngOnInit(){
this.articles = [
{
id: 1,
title: "title1"
},{
id: 2,
title: "title2",
}]
}
}
Mehr Infos hier auf meinem Github und diesen Beitrag auf meiner Website