任何人都可以向我澄清如何使用.forRoot()調用構建多個嵌套的要素模塊層次結構?如何在要素模塊層次結構中使用.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
};
}
}
我可以創建另一個類爲根的使用則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
因爲我知道這個由官方角色團隊維護的回購。所以他們只需在特殊的MaterialRootModule模塊中導入所有的.forRoot()調用即可解決上述問題。我真的不明白它將如何應用於我自己的根模塊? 根和.forRoot真的意味着什麼?這是相對於包而不是實際的Web項目?
我不知道你爲什麼要創建和使用'forRoot'方法..也許這有助於:https://angular.io/docs/ts/latest/guide/ngmodule.html – mxii
是的。我閱讀了官方文檔。沒有任何關於如何用多個嵌套模塊來構建複雜項目。我想創建並使用forRoot,因爲提供者單例在整個項目中只應該安裝一次。 – ggabor
好的,因爲在你的例子中沒有提供者。 :) – mxii