Угловое состояние магазина не определено - PullRequest
0 голосов
/ 28 марта 2019

У меня есть приложение Angular 7, которое использует ngrx-store с сущностями.Существует проблема в том, что элементы моего состояния магазина не определены в моем эффекте.

Вот фрагмент эффекта:

@Effect()
loadAccountSummaries$ = this.action$.pipe(
  ofType(fromAccountSummary.LOAD_ACCOUNT_SUMMARIES),
  withLatestFrom(this.store),
  filter(([ action, storeState ]: [ Action, State ]) => {
     // storeState.accountSummaries is undefined
     return !(storeState.accountSummaries.loaded || storeState.accountSummaries.loading)
    }
  ),
  switchMap(() => {
    this.store.dispatch(new LoadingAccountSummaries());
    return this.accountSummaryService.loadAccountSummaries()
      .pipe(map(accountSummaries => {
        this.store.dispatch(new LoadingAccountSummaries());
        return new fromAccountSummary.LoadAccountSummariesSuccess(accountSummaries);
      }));
  }));

Мой редуктор включает следующее:

export interface AccountSummariesState extends EntityState<AccountSummary> {
  loading: boolean;
  loaded: boolean;
}

Исходное состояние выглядит следующим образом:

export const initialAccountSummariesState: AccountSummariesState = adapter.getInitialState({
  loading: false,
  loaded: false
});

Редуктор инициализируется так:

export function reducer(
  state = initialAccountSummariesState,
  action: fromAccountSummary.AccountSummaryActionsUnion
) {
  // ...
}

Состояние и редукторы регистрируются так:

export interface State {
  accountSummaries: fromAccountSummary.AccountSummariesState;
  contributionDetails: fromContributionDetail.ContributionDetailState;
}

export const reducers: ActionReducerMap<State> = {
  accountSummaries: fromAccountSummary.reducer,
  contributionDetails: fromContributionDetail.reducer
};


@NgModule({
  imports: [
    // ...
    StoreModule.forFeature('accountSummary', reducers.accountSummaries),
    StoreModule.forFeature('contributionDetail', reducers.contributionDetails),
    EffectsModule.forFeature([ AccountSummaryEffects, ContributionDetailEffects ])
    // ...
  ]
})

Почему мой storeState.accountSummaries не определен в моем действии?Насколько я могу судить, я правильно все зарегистрировал и инициализировал.

1 Ответ

1 голос
/ 28 марта 2019

В модуле ngrx вы создаете функцию accountSummary, но вызываете клавишу accountSummaries.Попробуйте поменять звонок на storeState.accountSummary

...