私はJSONファイルをロードし、カスタムパイプにそのサービスを使っているサービスがあります。パイプからJSONをロードするには?
import { Pipe, PipeTransform } from '@angular/core';
import { Observable } from 'rxjs/Rx';
import { LanguageLoadService } from '../../services/language-load/language-load.service';
@Pipe({name: 'langAsset'})
export class LangAsset implements PipeTransform {
constructor(private languageService: LanguageLoadService) {
}
transform(textKey: string): Observable<any> {
return new Observable(observer => {
this.languageService.loadLanguage("en-US").subscribe((langData) => {
observer.next(langData[textKey] ? langData[textKey] : 'Error');
})
});
}
}
、テンプレート上:
<p>{{'test' | langAsset | async }}</p>
をしかし、サービスのロードが完了する前に、それが実行を変換ようです結果としてJSONはページに[object Object]
であり、loadLanguage
購読内からログを記録すると、console.logはそれを正常に出力します。変換関数に文字列の代わりにオブザーバブルを返すことで、これをどのように再実行することができますか?私はAsyncPipe
を使用しなければならないことを知っていますが、これについてどうやって行くのかは分かりません。