サーバーから取得したデータを処理するカスタム パイプを Angular 2 RC5 に実装しました。私が抱えている問題は、パイプがngOnInit
サーバーへの呼び出しを行っている場所の前に実行されることです。
テストとして、すでに入力されているリストをパイプに渡しましたが、すべてが期待どおりに機能します。私が抱えている唯一の問題は、ページがレンダリングされるときにパイプが実行されることです。したがって、その場合のリストは空です。
パイプが実行されたときにサーバーからデータが取得されるように、ページのレンダリングを「遅らせる」方法はありますか?
これは私のコードのサンプルです:
成分
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));
}
パイプ
@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;
}
}
}
}
テンプレート
<span>{{ 'Test' | multiLang: pageMultilinguals: 9 }}</span>