Я получаю ошибку:
ERROR in src/app/account/account.reducers.ts(24,37): error TS2339: Property 'accounts' does not exist on type '{ account: Account; } | { accounts: Account[]; }'.
Property 'accounts' does not exist on type '{ account: Account; }'.
Это относится к строке addAll на адаптере в редукторе:
export interface AccountState extends EntityState<Account> {
allAccountsLoaded : boolean;
}
export const adapter : EntityAdapter<Account> = createEntityAdapter<Account>();
export const initialAccountState: AccountState = adapter.getInitialState({
allAccountsLoaded: false
});
export function accountReducer(state = initialAccountState, action: AccountActions): AccountState {
switch(action.type) {
case AccountActionTypes.AccountLoaded:
adapter.addOne(action.payload.account, state);
case AccountActionTypes.AllAccountsLoaded:
adapter.addAll(action.payload.accounts, {...state, allAccountsLoaded: true});
default: {
return state;
}
}
}
, но когда я смотрю на соответствующие действия редукторапередаваемая им полезная нагрузка представляет собой массив учетных записей с именем реквизита как «account»
export class AllAccountsLoaded implements Action {
readonly type = AccountActionTypes.AllAccountsLoaded;
constructor(public payload: {accounts: Account[]}) {
}
}
Так что, похоже, полезная нагрузка должна быть передана правильно.меня беспокоит часть ошибки: '{account: Account;} |{account: Account [];}».Я уже видел, как Ngrx выдает такие ошибки, если я неправильно набрал название одного из событий в наблюдаемых эффектах, но я проверил его, и он выглядит хорошо с первого взгляда:
@Effect()
loadAllAccounts$ = this.actions$
.pipe(
ofType<AllAccountsRequested>(AccountActionTypes.AllAccountsRequested),
withLatestFrom(this.store.pipe(select(allAccountsLoaded))),
filter(([action, allAccountsLoaded]) => !allAccountsLoaded),
mergeMap(() => this.accountService.getUserAccounts()),
map(accounts => new AllAccountsLoaded({accounts}))
);