谁能向我澄清一下我应该如何通过.forRoot()
调用来构建多个嵌套的功能模块层次结构?
例如,如果我有这样的模块怎么办:
- MainModule
- SharedModule
- FeatureModuleA
- FeatureModuleA1
- FeatureModuleA2
- FeatureModuleB
所有功能模块都具有.forRoot()
静态功能。
我应该如何定义FeatureModuleA以某种方式“转移”.forRoot()
功能?
@NgModule({
imports: [
//- I can use .forRoot() calls here but this module not the root module
//- I don't need to import sub-modules here, FeatureA only a wrapper
//FeatureModuleA1.forRoot(), //WRONG!
//FeatureModuleA2.forRoot(), //WRONG!
],
exports: [
//I cannot use .forRoot() calls here
FeatureModuleA1,
FeatureModuleA2
]
})
class FeatureModuleA {
static forRoot(): ModuleWithProviders {
return {
//At this point I can set any other class than FeatureModuleA for root
//So lets create a FeatureRootModuleA class: see below!
ngModule: FeatureModuleA //should be: FeatureRootModuleA
};
}
}
我可以为 root 使用创建另一个类,然后在forRoot()
FeatureModuleA 的函数中设置它:
@NgModule({
imports: [
//Still don't need any sub module within this feature module
]
exports: [
//Still cannot use .forRoot() calls but still need to export them for root module too:
FeatureModuleA1,
FeatureModuleA2
]
})
class FeatureRootModuleA { }
但是我怎样才能
.forRoot()
在这个特殊的 ModuleClass 中“转移”调用呢?
正如我所见,我需要将所有子模块直接导入我的根 MainModule 并.forRoot()
在那里调用每个子模块:
@NgModule({
imports: [
FeatureModuleA1.forRoot(),
FeatureModuleA2.forRoot(),
FeatureModuleA.forRoot(),
SharedModule.forRoot()
]
})
class MainModule { }
我对吗?在您回答之前,请查看此文件: https ://github.com/angular/material2/blob/master/src/lib/module.ts
据我所知,这个 repo 是由官方 Angular 团队维护的。.forRoot()
所以他们通过在一个特殊的 MaterialRootModule 模块中导入所有调用来解决上述问题。我真的不明白它将如何应用于我自己的根模块?root和.forRoot在这里的真正含义是什么?这是相对于包而不是实际的网络项目?