ngx-translate - 合并不同模块的翻译文件

dev*_*ler 9 javascript angular-cli ngx-translate angular

我在我的项目中使用 angular-cli 和 @ngx-translate。该应用程序具有延迟加载模块和一个带有组件的共享模块(非延迟加载)。语言文件按模块分开。问题是当我在延迟加载的组件中使用共享组件时,共享组件从延迟加载的模块 (feature.xx.json) 的翻译文件中获取字符串,而不是从 app 模块 (core.xx.json) 中获取字符串。所以我应该在每个功能模块的翻译文件中声明共享组件的字符串。

我希望,共享模块始终使用应用程序模块(core.xx.json)或自己的翻译文件。

app.module.ts

    export function createTranslateLoader(http: HttpClient) {
        return new TranslateHttpLoader(http, './assets/i18n/core.','.json'); 
    }
    ...
    imports [ 
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: (createTranslateLoader),
                deps: [HttpClient]
            },
            isolate: false
        }),
        ...
    ]
Run Code Online (Sandbox Code Playgroud)

共享模块.ts

    imports: [
        TranslateModule,
        ...]
Run Code Online (Sandbox Code Playgroud)

功能模块

    export function createTranslateLoader(http: HttpClient) {
        return new TranslateHttpLoader(http, './assets/i18n/feature.', '.json');
    }
    ...
    imports: [
        ...
        SharedModule,
        TranslateModule.forChild({
            loader: {
                provide: TranslateLoader,
                useFactory: (createTranslateLoader),
                deps: [HttpClient]
            },
        isolate: true
        })] 
Run Code Online (Sandbox Code Playgroud)