angular 2 ng2-translate 自定义 TranslateLoader 不适用于 API
angular 2 ng2-translate custom TranslateLoader not working with API
ng2-translate 在从 API 获取数据时无法使用自定义 TranslateLoader
。下面是我的自定义 TranslateLoader
translateCustomLoader.ts
@Injectable()
export class CustomTranslateLoader implements TranslateLoader {
constructor(private http: Http, private apiService: AuthHttp) { console.log("customer loader initialized"); }
getTranslation(lang: string): Observable<any>{
var apiAddress = "http://test.com/api/gettranslationsfromDB?culture=" + lang;
return this.apiService.get(apiAddress).map((res) => res.json());
//return Observable.of({ "hello": "translatedhello","welcome":"translatedwelcome"});
}
}
来自 API 的响应是
{ "hello": "translatedhello","welcome":"translatedwelcome"}
已将 TranslateLoader 添加到 app.module.ts
中的提供程序
providers: [CustomTranslateLoader, { provide: TranslateLoader, useClass: CustomTranslateLoader}]
在我的 HTML 页面中,我有以下
<h4>{{ 'hello' | translate }}</h4>
我仍然看到 hello
如果我替换
得到 rendered.This 效果很好
return this.apiService.get(apiAddress).map((res) => res.json());
和
return Observable.of({ "hello": "translatedhello","welcome":"translatedwelcome"});
所以我很确定configuration.What没有任何问题,我在这里失踪了吗?
我通过如下更改 getTranslation 使其正常工作
getTranslation(lang: string): Observable<any> {
var apiAddress = "http://test.com/api/gettranslationsfromDB?culture=" + lang;
return Observable.create(observer => {
this.authService.get(apiAddress)
.subscribe((res: Response) => {
observer.next(JSON.parse(res.json()));
observer.complete();
});
});
}
虽然对我来说意义不大。希望这对某人有所帮助。
ng2-translate 在从 API 获取数据时无法使用自定义 TranslateLoader
。下面是我的自定义 TranslateLoader
translateCustomLoader.ts
@Injectable()
export class CustomTranslateLoader implements TranslateLoader {
constructor(private http: Http, private apiService: AuthHttp) { console.log("customer loader initialized"); }
getTranslation(lang: string): Observable<any>{
var apiAddress = "http://test.com/api/gettranslationsfromDB?culture=" + lang;
return this.apiService.get(apiAddress).map((res) => res.json());
//return Observable.of({ "hello": "translatedhello","welcome":"translatedwelcome"});
}
}
来自 API 的响应是
{ "hello": "translatedhello","welcome":"translatedwelcome"}
已将 TranslateLoader 添加到 app.module.ts
中的提供程序providers: [CustomTranslateLoader, { provide: TranslateLoader, useClass: CustomTranslateLoader}]
在我的 HTML 页面中,我有以下
<h4>{{ 'hello' | translate }}</h4>
我仍然看到 hello
如果我替换
return this.apiService.get(apiAddress).map((res) => res.json());
和
return Observable.of({ "hello": "translatedhello","welcome":"translatedwelcome"});
所以我很确定configuration.What没有任何问题,我在这里失踪了吗?
我通过如下更改 getTranslation 使其正常工作
getTranslation(lang: string): Observable<any> {
var apiAddress = "http://test.com/api/gettranslationsfromDB?culture=" + lang;
return Observable.create(observer => {
this.authService.get(apiAddress)
.subscribe((res: Response) => {
observer.next(JSON.parse(res.json()));
observer.complete();
});
});
}
虽然对我来说意义不大。希望这对某人有所帮助。