import { StoreRouterConnectingModule } from '@ngrx/router-store'; import { StoreDevtoolsModule } from '@ngrx/store-devtools'; import { CommonService } from 'meng-common'; import { Injectable } from '@angular/core'; import { logger, storeStateGuard } from './util/meta-reducer-factory'; import { MetaReducer, StoreModule } from '@ngrx/store'; @Injectable({providedIn: 'root'}) export class NgrxConfigService { private environment; constructor(private service: CommonService) { this.environment = service.getEnv(); } get StoreDevtools() { return !this.environment.production ? StoreDevtoolsModule.instrument({ maxAge: 50 }) : []; } get metaReducers(): MetaReducer[] { return !this.environment.production ? [ logger, storeStateGuard, ] : [storeStateGuard]; } get StoreModule(): any { // StoreConfig Interface: for varName is metaReducers // https://github.com/ngrx/platform/blob/6aa5645144e2b64664b32f09047c9149ee0691df/modules/store/src/store_module.ts const metaReducers = this.metaReducers; return StoreModule.forRoot({}, { metaReducers } ); } get ImportArray() { return [ this.StoreModule, StoreRouterConnectingModule.forRoot(), this.StoreDevtools, ]; } }