projects/core/src/product/store/product-store.module.ts
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { EffectsModule } from '@ngrx/effects';
import { StoreModule } from '@ngrx/store';
import {
StateConfig,
StateTransferType,
} from '../../state/config/state-config';
import { effects } from './effects/index';
import { PRODUCT_FEATURE } from './product-state';
import { metaReducers, reducerProvider, reducerToken } from './reducers/index';
import { provideDefaultConfigFactory } from '../../config/config-providers';
export function productStoreConfigFactory(): StateConfig {
// if we want to reuse PRODUCT_FEATURE const in config, we have to use factory instead of plain object
const config: StateConfig = {
state: {
ssrTransfer: {
keys: { [PRODUCT_FEATURE]: StateTransferType.TRANSFER_STATE },
},
},
};
return config;
}
@NgModule({
imports: [
CommonModule,
StoreModule.forFeature(PRODUCT_FEATURE, reducerToken, { metaReducers }),
EffectsModule.forFeature(effects),
],
providers: [
provideDefaultConfigFactory(productStoreConfigFactory),
reducerProvider,
],
})
export class ProductStoreModule {}