首页 > 解决方案 > Angular ngx-translate 内部服务

问题描述

我正在使用 ngx-translate 和 ngx-translate/http-loader 来翻译我的 ionic/angular 项目。我在 app.module.ts 导入中有这段代码:

TranslateModule.forRoot({
  loader: {
    provide: TranslateLoader,
    useFactory: (createTranslateLoader),
    deps: [HttpBackend]
  }
})

和这个加载器函数在同一个文件中:

export function createTranslateLoader(handler: HttpBackend) {
     const http = new HttpClient(handler);
     return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

这让我有机会在组件的 html 中使用这种翻译语法:{{ 'TEXT' | translate }},我也可以编写类似的东西来翻译组件的 ts 文件: var text = this.translateService.instant("TEXT");

现在我想使用由我尝试过translateService.instant的命令生成的内部服务"ng generate s",但它不起作用,它会"TEXT"自行返回。那么问题是什么?

标签: angulartypescriptionic-framework

解决方案


尝试this.translateService.get("TEXT").subscribe(...)

见:https ://github.com/ngx-translate/core#4-use-the-service-the-pipe-or-the-directive

instant(key: string|Array, interpolateParams?: Object): string|Object: 获取键(或键数组)的即时转换值。/!\ 这个方法是同步的,默认的文件加载器是异步的。您有责任知道您的翻译何时已加载,并且使用此方法是安全的。如果您不确定,那么您应该使用 get 方法。


推荐阅读