Ich habe eine benutzerdefinierte Pipe in Angular 2 RC5 implementiert, die Daten verarbeitet, die ich vom Server bekomme. Das Problem, das ich habe, ist, dass die Pipe vor dem ngOnInit
ausführt, wo ich die Anrufe zum Server mache.Angular 2 Pipes ausführen vor ngOnInit
Als Test übergab ich eine bereits gefüllte Liste an die Pipe und alles funktioniert wie erwartet. Das einzige Problem, das ich habe, ist, dass die Pipe ausgeführt wird, wenn die Seite gerendert wird. Und so ist die Liste in diesem Fall leer.
Gibt es eine Möglichkeit, das Rendern der Seite zu "verzögern", so dass beim Ausführen der Pipe die Daten vom Server abgerufen werden?
Dies ist ein Beispiel von meinem Code:
Komponente
ngOnInit() {
Observable.forkJoin([
this.testService.get(),
this.multilingualService.get(localStorage.getItem('currentPage'))
]).subscribe(servicesResult => {
this.mainList = servicesResult[0];
this.pageMultilinguals = servicesResult[1];
},
error => this.handleError(error));
}
Rohr
@Pipe({name: 'multiLang'})
export class MultilingualPipe implements PipeTransform {
transform(value: string, pageMultilinguals: Multilingual[], context: number): string {
for (let i = 0; i < pageMultilinguals.length; i++) {
if (pageMultilinguals[i].reference === value && pageMultilinguals[i].contexTypeId === context) {
return pageMultilinguals[i].value;
}
}
}
}
Vorlage
<span>{{ 'Test' | multiLang: pageMultilinguals: 9 }}</span>
Können Sie einen Scheck für leere Daten hinzufügen in Ihrer Pfeife und einfach nur den ursprünglichen Wert in diesem Fall? – rook
Ich habe nur ein einfaches Beispiel in die Vorlage eingefügt. Dies ist für eine mehrsprachige Referenz, so dass Sie eine Referenz 'Page_Header_1' haben können und Sie erhalten den Wert zurück. –