如果我在Angular应用程序的主模块中有以下场景会怎样?
在app.module.ts上我使用forRoot()导入模块TranslateModule来配置它并使其可用于所有应用程序。在shared.module.ts中,我导出该模块,以便其他模块可以使用它。在shared.module.ts中我也导出服务,所以我创建了forRoot()方法并将其导入app.module.ts。
这样我两次导入TranslateModule。一个直接在app.module.ts中使用forRoot表单,另一个通过shared.module.ts。这样做有问题吗?如果它存在,怎么解决?
app.module.ts
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
NgbModule.forRoot(),
ComponentsModule,
DashboardModule,
OtherModule,
HttpClientModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
SharedModule.forRoot()
],
providers: [],
bootstrap: [AppComponent]
})
shared.module.ts
@NgModule({
imports: [
CommonModule
],
declarations: [],
exports: [
TranslateModule
]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [CounterService]
};
}
}
答案 0 :(得分:1)
上述方法应该可以正常工作。如上所述,不会有任何问题。
使用ngx-translate配置 app.module.ts
后,您可以使用ngx-translate存储库中提到的shared.module在其他模块上实现,那么您无需担心导入每次翻译模块。您只需要在shared.module中添加它:
详细了解 this.