ngx-translate如何将翻译文件引用映射到任何一个模块,并在其他懒惰模块中使用它们,而无需多次下载

问题描述

我的Angular应用程序有多个模块,每个模块都有自己的语言文件,并且在app.module.ts文件中加载了一些跨应用程序使用的通用组件。下面是代码

我在ngx-translate / multi-http-loader中使用ngx-translate(核心和http)。

App.module.ts

export function createTranslateLoader(http: HttpClient) {
  return new MultiTranslateHttpLoader(http,[
    { prefix: './assets/i18n/app/',suffix: '.json' },{ prefix: './assets/i18n/common/',{ prefix: './assets/i18n/common-components/',{ prefix: './assets/i18n/common-dialogs/',{ prefix: './assets/i18n/shared/',{ prefix: './assets/i18n/report-management/common/',suffix: '.json' }
  ]);
}

in importing

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

同样,当我尝试使用通用/共享组件翻译的引用时,我在其他模块组件中分别使用 TranslateModule.forChild 在其他模块中分别创建了类似的设置。当我在下面的其他模块中声明时,它们被多次下载。

export function createTranslateLoader(http: HttpClient) {
  return new MultiTranslateHttpLoader(http,[
    {prefix: './assets/i18n/client-management/',suffix: '.json'},{prefix: './assets/i18n/common-components/',{prefix: './assets/i18n/shared/',suffix: '.json' }
  ]);
}

in importing

TranslateModule.forChild({
      loader: {
        provide: TranslateLoader,useFactory: createTranslateLoader,

现在我的问题是,那些常见的翻译已经在app.module中声明,并且在其他模块中引用时没有被调用,而当我在这个惰性模块中再次声明它们时,它们从app.module一次加载了多次另一个来自惰性模块。哪个不应该,因为已经通过app.module调用了它们,为什么不进入我的延迟加载模块。

有人可以建议如何多次停止这些通用文件的多次下载,一旦声明可以在多个模块中使用?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)