我一直在开发一款应用来学习Angular Ngrx商店和实体。该应用程序使用ngrx / platform中的示例应用程序作为起点。 The code and app is here on StackBlitz
我正在尝试使用createSelector来过滤pomos,其task_id与所选任务的id匹配。甚至无法做到这一点,我尝试使用基于EntityAdapter的pomo reducer将所有pomos加载到状态。这也行不通。我的所有操作都是成功的,包括在商店中添加pomo但我无法加载它们。在这一点上,我只是试图让所有这些加载,但最终目标是一个选择器,根据它的task_id加载pomos。我怀疑问题很可能是国家实际上是如何组成的,但我无法弄清楚如何去做。就像我说的那样,添加Pomo到商店的动作很好,但在加载pomos时。它返回空。
以下是我对Redurs / index.ts的内容
export interface State {
search: fromSearch.State;
tasks: fromTasks.State;
pomos: fromPomos.State;
collection: fromCollection.State;
}
export const reducers: ActionReducerMap<any> = {
search: fromSearch.reducer,
tasks: fromTasks.reducer,
pomos: fromPomos.reducer,
collection: fromCollection.reducer,
};
export const getTasksState = createFeatureSelector<TasksState>('tasks');
export const getPomosState = createSelector(getTasksState, state => state.pomos);
export const getTaskEntitiesState = createSelector(
getTasksState,
state => state.tasks
);
export const getPomosEntitiesState = createSelector(
getTasksState,
state => state.pomos
);
export const {
selectIds: getTaskIds,
selectEntities: getTaskEntities,
selectAll: getAllTasks,
selectTotal: getTotalTasks,
} = fromTasks.adapter.getSelectors(getTaskEntitiesState);
export const {
selectIds: getPomoIds,
selectEntities: getPomoEntities,
selectAll: getAllPomos,
selectTotal: getTotalPomos,
} = fromPomos.adapter.getSelectors(getPomosEntitiesState);