У меня есть компонент, который отправляет некоторые действия пользовательского интерфейса, и для каждого из этих действий пользовательского интерфейса обновляется хранилище ngrx, а затем вызывается действие LoadData. В настоящее время каждое действие выглядит примерно так:
export class AddCityFilter implements Action {
readonly type = ADD_CITY_FILTER;
constructor(
public payload: string,
public loadParams: LoadParams
) {}
}
Вот пример того, что одно из действий пользовательского интерфейса делает в магазине:
switch (action.type) {
case fromActions.ADD_CITY_FILTER: {
const cityFilters = [...state.cityFilters, action.payload];
return {
...state,
cityFilters
};
}
и эффект, который запускает действие загрузки после любого из этих действий пользовательского интерфейса, выглядит следующим образом:
@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);
})
Это работает, однако, меня беспокоит, что я должен передать параметры для действия загрузки начальному действию, которое обновляет хранилище пользовательского интерфейса. Это неправильно, потому что эти действия предназначены для хранилища пользовательского интерфейса и не должны в идеале знать об этом следующем действии загрузки, а также потому, что это вынуждает меня добавить свойство loadParams к действию, которое даже не нужно ничего передавать (если Я хочу включить это в вышеупомянутый эффект). Есть ли способ передать через loadParams второе действие загрузки, не включая их в первое действие пользовательского интерфейса?