В моем приложении angular есть несколько функциональных модулей:
- CoreModule (содержит сервисы для вызовов и моделей API)
- MainModule (содержит компоненты основного приложения)
- MainDetailModule (содержит функцию для подробного просмотра, ленивая загрузка)
- MainStoreModule (содержит определение ngrx / store, действия, редукторы и т. Д.)
main.module.ts (MainModule)
// imports
@NgModule({
imports: [
CommonModule,
FormsModule,
CoreModule,
MainRoutingModule,
TranslateModule.forChild(),
BsDropdownModule.forRoot(),
MainDetailModule,
MainStoreModule
],
declarations: [
// components
],
providers: []
})
export class MainModule { }
main-detail.module.ts (MainDetailModule)
// imports
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
MainDetailRoutingModule,
TranslateModule.forChild(),
MainStoreModule
],
declarations: [
// components
]
})
export class MainDetailModule { }
main-store.module.ts (MainStoreModule)
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { StoreModule } from '@ngrx/store';
import { StoreDevtoolsModule } from '@ngrx/store-devtools';
import { metaReducers, rootReducers } from './reducer/root.reducer';
@NgModule({
imports: [
CommonModule,
StoreModule.forRoot(rootReducers, {metaReducers}),
StoreDevtoolsModule.instrument({
maxAge: 10
})
],
declarations: []
})
export class MainStoreModule { }
Мой MainModule импортирует CoreModule, MainStoreModule и MainDetailModule. MainDetailModule будет загружаться лениво при нажатии на ссылку с подробностями.
Во всем основном приложении мой MainStore работает нормально. Но если я перейду к MainDetailModule, MainStoreModule будет повторно инициализирован, и поэтому он останется пустым. Я знаю, что ngrx / store может работать с лениво загруженными модулями, и знаю, как это сделать. У меня вопрос, как заставить мой MainStoreModule работать с моим ленивым загруженным модулем? Должен ли я реализовать аналогичные функции, такие как forRoot () и forChild (), в моем MainStoreModule?