我有一个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);
}));
}));我的reduer包括以下内容:
export interface AccountSummariesState extends EntityState<AccountSummary> {
loading: boolean;
loaded: boolean;
}初始状态如下:
export const initialAccountSummariesState: AccountSummariesState = adapter.getInitialState({
loading: false,
loaded: false
});reducer是这样初始化的:
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在我的效果中没有定义?据我所知,我已经正确地注册和初始化了所有内容。
发布于 2019-03-28 21:24:58
在ngrx模块中,你正在创建accountSummary特性,但是你调用了accountSummaries键。尝试将call更改为storeState.accountSummary
https://stackoverflow.com/questions/55398263
复制相似问题