我有一个分派一些UI动作的组件,对于每个UI动作,将更新ngrx存储,然后调用LoadData动作。当前,每个动作如下所示:
export class AddCityFilter implements Action {
readonly type = ADD_CITY_FILTER;
constructor(
public payload: string,
public loadParams: LoadParams
) {}
}
以下是其中一个UI动作在商店中执行的操作的示例:
switch (action.type) {
case fromActions.ADD_CITY_FILTER: {
const cityFilters = [...state.cityFilters, action.payload];
return {
...state,
cityFilters
};
}
,并且在执行这些UI动作之后触发加载动作的效果如下:
@Effect()
uiUpdate$ = this.actions$.pipe(
ofType(
uiActions.ADD_CITY_FILTER,
uiActions.REMOVE_CITY_FILTER,
uiActions.ADD_TYPE_FILTER,
uiActions.REMOVE_TYPE_FILTER,
uiActions.UPDATE_SORT_COLUMN
),
map((action: uiActions.uiActions) => {
return new opportunitiesActions.LoadOpportunities(action.loadParams);
})
这正在工作,但是,令我烦恼的是,我必须将用于加载操作的参数传递给用于更新UI存储的初始操作。感觉不对,是因为这些操作旨在用于UI存储,并且理想情况下不应意识到下一个加载操作,而且还因为它迫使我将loadParams属性添加到甚至不需要传递任何内容的操作(如果我想将其包括在上述效果中)。有没有办法将loadParams传递给第二个load操作,而不将它们包含在第一个UI操作中?