私は子コンポーネントを持つ親コンポーネントを持っていますが、私はそれをAPIから取得するユーザー言語に基づいてテキストを翻訳したいと思います。サービスに加入した後のAngular2の翻訳
transform(value : string, args: any[]) : any
{
if (!value) return ;
return this._translationService.translate(value) ;
}
ここ
export class TranslationService {
private _currentLang: string = 'en';
public use(langId: number): void {
this._currentLang = langId == 0 ? 'fr' : 'en';
}
public translate(key: string) {
//tranlsation happens here
}
}
翻訳サービスは、そのがでngOnInitでLANGID()
ngOnInit() : void
{
this._langService.getLanguageId(this.userId)
.subscribe(langId=> { this._translationService.use(langId); });
}
}
を取得して親コンポーネントは次のとおりです。ここで
変換方法私の翻訳パイプであります親と子のコンポーネントテンプレート私はこれをパイプとして使用しました:<div >{{ 'Caption_Key' | translation }}</div>
子コンポーネントは翻訳サービスの言語を設定する前にキャプションを翻訳しています。しかし、親コンポーネントの変換は正常に動作しています。私は呼び出しが非同期であることがわかりますが、変換が行われる前に子コンポーネントが正しい言語を持つことをどうすれば保証できますか?
私はEventEmitter
とサービスで使用(LANGID)を呼び出すとき、イベントを発するを使用しようとした、そのイベントにサブスクライブするパイプを作ったが、それは動作しませんでした...
私が理解したように、全てのコンポーネントに 'translationService'を注入します。私は、サービスを注入し、すべてのコンポーネントで発行されたサブジェクトにサブスクライブするパイプ自体にこのロジックを保持する方法を探していました。 – Coding