Estoy tratando de agrupar el estado.
Índice.ts
export const reducers: ActionReducerMap<ApplicationState> = { admin: adminReducer }; export const metaReducers: MetaReducer<ApplicationState>[] = [];
Reductor de administración
export const adminReducer: any = { productCategory: ProductCategoryReducer, productVendor: ProductVendorReducer, productSubCategory: ProductSubCategoryReducer, products: ProductsReducer, product: ProductReducer, productDiscount: ProductDiscountReducer };
Cuando ejecuto la aplicación, en la herramienta redux, no puedo ver el estado. esta en blanco
export interface ApplicationState { admin: AdminState } export interface AdminState { productCategory: ProductCategoryState; productVendor: VendorState; productSubCategory: ProductSubCategoryState; products: ProductsState; product: ProductState; productDiscount: ProductDiscountState }
Registro
imports: [ StoreModule.forRoot(reducers, { metaReducers }), EffectsModule.forRoot([]), StoreDevtoolsModule.instrument({ maxAge: 25 }) ]
El Reducer
es una "función que toma una Action
y un State
, y devuelve un State
" , no un objeto, por lo que no puede agrupar los reductores entre sí simplemente creando un objeto que los contenga.
Gracias por la función NgRx
de NgRx , que proporciona una forma de combinar varios estados y devuelve el reducer
combinado como una función (con argumentos de state
y action
) que maneja los cambios de los subestados y devuelve el estado combinado.
Entonces, simplemente puede combinar los reductores usando combineReducers
como el siguiente:
export const adminReducer = combineReducers({ productCategory: ProductCategoryReducer, productVendor: ProductVendorReducer, productSubCategory: ProductSubCategoryReducer, products: ProductsReducer, product: ProductReducer, productDiscount: ProductDiscountReducer, });
Usando los combineReducers logré eso
export const adminReducer = combineReducers({ productCategory: ProductCategoryReducer, productVendor: ProductVendorReducer, productSubCategory: ProductSubCategoryReducer, products: ProductsReducer, product: ProductReducer, productDiscount: ProductDiscountReducer });