Как использовать .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
};
}
}
Я могу создать другой класс для использования 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
Насколько мне известно, этот репо поддерживается официальной угловой командой. Таким образом, они решают вышеупомянутое, просто импортируя все вызовы .forRoot () в специальном модуле MaterialRootModule. Я не очень понимаю, как это будет применяться для моего собственного корневого модуля? Что этокорень а также.forRoot действительно значит здесь? Это относится к пакету, а не к реальному веб-проекту?