ngrx / angular 6 - Попытка установить параметры для действия и другое действие через эффект - PullRequest
0 голосов
/ 24 января 2019

У меня есть компонент, который отправляет некоторые действия пользовательского интерфейса, и для каждого из этих действий пользовательского интерфейса обновляется хранилище 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 второе действие загрузки, не включая их в первое действие пользовательского интерфейса?

...