我已经查看了关于此的另外 2 篇文章,其中包含较大状态的一篇不适用,而另一篇注册了多个 forFeature - 我已经对此进行了一些测试,即使我在之前或之后导入它forRoot(reducers) 在我的 app.module 中,它没有区别。
我确定我在配置中遗漏了一些明显的东西。
我的配置:
export const orderAdapter: EntityAdapter<IOrder> = createEntityAdapter<IOrder>({
selectId: (order: IOrder) => order._id
});
export interface AllOrdersState extends EntityState<IOrder> {}
export const initialState: AllOrdersState = orderAdapter.getInitialState({
ids: [],
entities: {}
});
export const OrdersState = createFeatureSelector<AllOrdersState>('orders');
export const {
selectIds,
selectEntities,
selectAll,
selectTotal
} = orderAdapter.getSelectors(OrdersState);
我的实际减速器:
export function ordersReducer(
state: AllOrdersState = initialState,
action: actions.OrdersActions
) {
case actions.CREATE_MANY: {
console.log(action.orders);
return orderAdapter.addMany(action.orders, state);
}
}
我在我的 Order.Module 中注册为:
StoreModule.forFeature('orders', ordersReducer),
我的主要减速器地图:
const reducers: ActionReducerMap<AppState> = {
order: orderReducer,
admin: adminReducer,
tlabs: tlabsReducer,
reports: reportsReducer,
settings: settingsReducer,
orders: ordersReducer
};
然后是app.module中的主要导入:
StoreModule.forRoot(reducers),
尝试读取实体:
构造函数:
private store: Store<AppState>
实际功能:
this.store
.select(ordersReducer.selectAll)
该导入的来源:
import * as ordersReducer from '../../../../../store/reducers/orders.reducer';