Angular 动态加载特定项目的翻译文件

Angular 动态加载特定项目的翻译文件,angular,Angular,场景:我有一个共享模块,它有ngx translate,这个共享模块可以用于两个或多个不同的项目,每个项目都有自己的翻译文件。当此转换器共享模块与项目连接时,它应该只加载特定于项目的en.json而不是全部 因此,共享模块资产文件夹结构 assets |--i18n |----project1 |------en.json |----project2 |------en.json 我将通过app.module.ts传递项目是project1还是project2的查询,如下所示 @NgModul

场景:我有一个共享模块,它有
ngx translate
,这个共享模块可以用于两个或多个不同的项目,每个项目都有自己的翻译文件。当此转换器共享模块与项目连接时,它应该只加载特定于项目的
en.json
而不是全部

因此,共享模块资产文件夹结构

assets
|--i18n
|----project1
|------en.json
|----project2
|------en.json
我将通过app.module.ts传递项目是project1还是project2的查询,如下所示

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    SharedModule.forRoot('Project1'),
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
我在我的共享模块中也得到了这个值,下面是我的共享模块代码

@NgModule({
    declarations: [ ],
    imports: [
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: httpTranslateLoader,
                deps: [HttpClient]
            }
        })
    ],
    providers: [],
    exports: [TranslateModule]
})
export class SharedModule {
    static forChild(project:string): ModuleWithProviders<any> {
        console.log(project); //this consoles the project but fails the build, I'm stuck here
        return {
            ngModule: SharedModule,
            providers: [ ]
        }
    }
}

export function httpTranslateLoader(http: HttpClient) {
    return new TranslateHttpLoader(http);
}
@NgModule({
声明:[],
进口:[
HttpClientModule,
TranslateModule.forRoot({
加载器:{
提供:TranslateLoader,
使用工厂:httpTranslateLoader,
deps:[HttpClient]
}
})
],
提供者:[],
导出:[TranslateModule]
})
导出类共享模块{
静态forChild(项目:字符串):ModuleWithProviders{
console.log(project);//这可以控制项目,但是构建失败,我被困在这里了
返回{
ngModule:SharedModule,
提供者:[]
}
}
}
导出函数httpTranslateLoader(http:HttpClient){
返回新的TranslateHttpLoader(http);
}

因此,基于
项目
,我只需要加载assets中项目文件夹中的en.json。如果您有任何建议,我们将不胜感激。

能否将特定于翻译的文件的路径保存在环境文件中的JSON对象中

如果是这样,每个项目都会有自己的路径指向正确的翻译文件

// environments/environment.ts
export const globalEnv = {
  projectName: "my_projectId"
};