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"
};