私はサーバーから取得したデータを処理する角パイプ2 RC5のカスタムパイプを実装しました。私が抱えている問題は、サーバが呼び出されたところのngOnInit
の前にパイプが実行されることです。ngOnInitの前に実行されている角2パイプ
テストでは、すでにパイプが挿入されているリストをパイプに渡し、すべてが期待通りに機能します。唯一の問題は、ページがレンダリングされたときにPipeが実行されることです。そしてその場合のリストは空です。
ページのレンダリングを遅延させて、パイプが実行されたときにサーバーからデータが取得されるようにする方法はありますか?
これは私のコードのサンプルです:
コンポーネント
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>
:
私はあなたの場合には、渡された値が
null
ているときに例外が発生しないようにだけnull
値のためのパイプを安全にするために十分であるべきだと思いますあなたのパイプで、単にその場合の元の値を返すだけですか? – rook私はちょうどテンプレートに簡単な例を入れます。これは多言語リファレンスのため、 'Page_Header_1'という参照を持つことができ、その値を取得することができます。 –