2
私はメッセージキーを解決してロケールに応じてメッセージを返すパイプを持っています。角2はサービスの初期化を待ちます
しかし、私のサービスがメッセージの読み込みを完了するまで待つ必要があり、それ以降はメインページのレンダリングを続けます。私のローカリゼーションパイプが使われる場所。 どのように動作させるには?
サービス:
@Injectable()
export class I18nService implements OnInit {
private cachedMessages: {string: string};
activeLocale:I18Enum = null;
constructor(private http: Http) {
this.reloadLocale(I18Enum.ru);
}
ngOnInit(): void {
this.reloadLocale(I18Enum.ru);
}
getMessage(key: string) {
if (this.cachedMessages) {
return this.cachedMessages[key];
}
}
reloadLocale(locale: I18Enum) {
this.activeLocale = locale;
this.http.get(basePath + i18nPath + I18Enum[locale]).subscribe(
res => {
this.cachedMessages = res.json();
}
);
}
}
とパイプ:
@Pipe({name: 'i18nPipe'})
export class I18nPipe implements PipeTransform {
constructor(private i18Service: I18nService) {
}
transform(value: any, args: any): any {
return this.i18Service.getMessage(value);
}
}
可能[バックエンドからangle2ブートストラップメソッドにレンダリングされたパラメータを渡す方法](http://stackoverflow.com/questions/37611549/how-to-pass-parameters-rendered) -from-backend-to-angular2-bootstrap-method) – estus