Как использовать .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 действительно значит здесь? Это относится к пакету, а не к реальному веб-проекту?

Ответы на вопрос(3)

Ваш ответ на вопрос