可能是最常见的问题之一,虽然我找到了文档和一些其他问题,试图为我澄清一些事情,但我仍然不确定如何解决这个问题。
所以这是我的结构:
- App模块当然是被引导的主模块
- Countryselector模块:负责加载默认国家(基于IP)并负责根据浏览器决定使用什么语言。它基本上是决定使用哪个国家/语言的核心功能+它包含一个下拉菜单,供用户更改国家/语言。
- Checkout模块、选择模块、支付模块都是使用路由进行延迟加载的。
AppModule
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http);
}
@NgModule({
declarations: [
AppComponent
],
imports: [
HttpClientModule,
BrowserModule,
AppRoutingModule,
ContrySelectorModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
],
export class AppModule { }
国家选择器模块
@NgModule({
declarations: [CountryselectorComponent],
imports: [
CommonModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
})
],
exports: [
CountryselectorComponent
]
})
export class ContrySelectorModule { }
选择模块:
@NgModule({
declarations: [SelectionComponent],
imports: [
CommonModule,
SelectionRoutingModule,
UspblockModule,
TranslateModule.forChild({//or forRoot, no idea how to configure this
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}})
],
})
export class SelectionModule { }
现在的问题是,我不想在懒加载模块中再次进行语言配置,因为国家选择器模块已经处理了这个问题。我现在不确定如何正确配置懒加载模块(实际上也不确定countrySelectorModule是否正确)。使用标准github文档,我无法完成此操作。我已经尝试过对.forChild()
进行调整,但迄今为止没有成功。
我需要一个分享模块吗?我需要在每个地方都导入countrySelectorModule(不推荐)吗?自定义装载程序?说实话,我不知道,而且文档对于更高级的场景来说有点短。
CountrySelectorModule
是主页面的一部分,因此被导入到AppModule
中。我非常确定这个设置适用于惰性加载模块,尽管示例可能有点偏差。 - CularBytesextended
是什么,但其余部分与我的代码类似。 - CularBytesstatic forRoot(): ModuleWithProviders { ... }
,而是使用以下代码:static forRoot(): ModuleWithProviders<AppModule> { ... }
。 - M. Al Jumaily