import { NgModule, ModuleWithProviders } from '@angular/core'; import { StoreModule } from '@ngrx/store'; import { EffectsModule } from '@ngrx/effects'; import { ModuleConfig } from './config/module-config'; import { _MODULE_CONFIG } from './config/token'; import { KEY_FEATURE } from './store/state'; import { effects } from './store/effects'; import { reducers } from './store/reducers'; @NgModule({ imports: [ StoreModule.forFeature(KEY_FEATURE, reducers), EffectsModule.forFeature([...effects]) ] }) export class GroupStoreRootModule {} @NgModule({}) export class GroupStoreModule { public static forRoot( config: ModuleConfig ): ModuleWithProviders { return { ngModule: GroupStoreRootModule, providers: [{ provide: _MODULE_CONFIG, useValue: config }] }; } }