首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular6 -使用API调用加载使用ngx到后端的转换

Angular6 -使用API调用加载使用ngx到后端的转换
EN

Stack Overflow用户
提问于 2018-09-04 11:29:13
回答 2查看 10.2K关注 0票数 7

我想在我的前端使用ngx翻译来动态加载应用程序加载的翻译。

我的后端返回一个JSON格式的响应,例如:

代码语言:javascript
复制
{
   "something: "something"
}

我希望在我的TranslateLoader上使用该输出,而不是本地en.json文件。

有什么办法做到这一点吗?

TL;DL:我想调用'http://localhost:xxxx/api/translation/EN‘来获得翻译的JSON响应,并将其加载到TranslateHttpLoader

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-04 12:23:44

您可以创建一个工厂:

代码语言:javascript
复制
export function httpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http, "http://localhost:xxxx/api/translation/", "");
}

并在您的@NgModule导入中使用它:

代码语言:javascript
复制
TranslateModule.forRoot({
  loader: {
    provide: TranslateLoader,
    useFactory: httpLoaderFactory,
    deps: [HttpClient]
  }
}),
票数 7
EN

Stack Overflow用户

发布于 2018-09-04 11:41:52

我们可以通过自定义加载器类实现使用TranslateLoader提供程序

代码语言:javascript
复制
In Module :

export class CustomLoader implements TranslateLoader {

  constructor(private http: Http) {}

  public getTranslation(lang: String): Observable<any> {
    return this.http.get(URL).map(
      (res: any) => {
        return res;
      }
    );

  }
}

@NgModule({
  imports: [
    TranslateModule.forRoot({
      provide: TranslateLoader,
      useClass: CustomLoader,
      // useFactory: (createTranslateLoader),
      deps: [Http]
    })
  ]
}) 

组件中的

代码语言:javascript
复制
 constructor(private _translate: TranslateService){}

 const transText = this._translate.instant('something');
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52165296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档