【问题标题】:Translation not loaded on multimodule shared components - Angular 5多模块共享组件上未加载翻译 - Angular 5
【发布时间】:2018-01-12 11:47:04
【问题描述】:

我有以下问题。我使用 Angular 5 创建了多模块项目,并希望为延迟加载的模块动态加载翻译。假设我的结构是这样的:

app
 ->app.module.ts
 ->shared-components
  ->shared.components.module.ts and components
 ->lazy-loaded-module1.ts
 ->lazy-loaded-module2.ts

现在我在 app.module.ts 和 shared.components.module.ts 之间共享了 app.translation.module.ts,所以我的 app.translation.module 看起来像这样:

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

const translationOptions = {
  loader: {
    provide: TranslateLoader,
    useFactory: (createTranslateLoader),
    deps: [HttpClient],
    isolate: true
  }
};

@NgModule({
  imports: [TranslateModule.forRoot(translationOptions)],
  exports: [TranslateModule],
  providers: [TranslateService]
})
export class AppTranslationModule {
}

当我想在一个延迟加载的模块中使用共享组件中的组件时,问题就开始了(它们有自己的 TranslationModule.forChild() 翻译)。似乎共享组件不再使用自己的翻译模块并开始使用其中一个父模块,在我看来这是不可接受的,因为我必须在所有使用共享组件的模块之间克隆翻译,这使得它根本不可用。我做错了什么吗?什么应该是正确的配置?

【问题讨论】:

    标签: angular lazy-loading multi-module ngx-translate


    【解决方案1】:

    制作一个导入翻译模块的 SharedModule 并将该 SharedModule 导入 SharedComponentModule。 一个例子:

    SharedModule.ts

    import { TranslateModule } from '@ngx-translate/core';    
    @NgModule({
       exports: [
           TranslateModule,
       ],
    providers: [],
    })
    export class SharedModule { }
    

    SharedComponentModule.ts

    @NgModule({
    imports: [
           SharedModule
       ],
    })
    export class SharedComponentModule { }
    

    【讨论】:

    • 这是个老问题,你的回答无论如何也行不通;)在使用的 ngx-translate 版本中,没有合并翻译的选项,这里基本上就是这种情况。
    • 当前版本有问题,无法通过将常用组件放入 SharedModule 来加载翻译。我发现这个问题没有任何答案,并找到当前版本的解决方案。
    • 我仍然认为您可以使用 TranslateService 的一个或另一个实例,无论如何它们都被替换了。我的解决方案是不隔离 TranslateServices,而是使用 Singleton 并启用合并翻译选项。这样我就没有获得翻译服务的 IMO 冗余实例,而是使用延迟加载的模块完成了所有需要的翻译
    猜你喜欢
    • 1970-01-01
    • 2019-01-04
    • 2018-09-26
    • 1970-01-01
    • 2018-04-17
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多