Angular NgRx父选择器静态参数

Angular NgRx父选择器静态参数,angular,ngrx,Angular,Ngrx,假设我有一个选择器,它接收道具: export const selectTaskById = createSelector( selectCoreState, (state, props: { id: TaskKey }) => state?.tasks[props.id] || null ); 然后我有另一个选择器,它不接收道具,但它需要使用来自上述选择器的数据,通过提供硬编码id: export const selectGeneralTask = createSelector

假设我有一个选择器,它接收道具:

export const selectTaskById = createSelector(
  selectCoreState,
  (state, props: { id: TaskKey }) => state?.tasks[props.id] || null
);
然后我有另一个选择器,它不接收道具,但它需要使用来自上述选择器的数据,通过提供硬编码id:

export const selectGeneralTask = createSelector(
  selectTaskById, // -- Here I want to pass hardcoded props with {id: 'generalTask'}
  (state) => state
);
我搜索了SO和互联网,但没有找到一个解决方案,我如何才能做到这一点

总之,我想找到一种方法,如何在选择器上进行某种“抽象”,而不需要在我需要特定任务信息的每个地方都知道“id”

更新
就目前而言,我找到的唯一解决方案如下:
我又添加了一个选择器:

export const selectRootState = (state: AppState) => state;
export const selectTaskById = (id) => createSelector(
  selectCoreState,
  (state) => state?.tasks[id] || null
);

export const selectGeneralTask = createSelector(
  selectTaskById('generalTask'),
  (state) => state
);
然后,在
选择GeneralTask
中使用它:

export const selectGeneralTask = createSelector(
  selectRootState,
  (state) => selectTaskById(state, {id: 'generalTask'})
);

如果有人有其他方法来解决这个问题,我会很高兴听到它。

您可以创建一个工厂选择器:

export const selectRootState = (state: AppState) => state;
export const selectTaskById = (id) => createSelector(
  selectCoreState,
  (state) => state?.tasks[id] || null
);

export const selectGeneralTask = createSelector(
  selectTaskById('generalTask'),
  (state) => state
);

嗯…当我试着选择工厂时,它不起作用。现在,当你举一个例子时,我很清楚我错过了什么:)谢谢!我换了工厂。