Я только учусь ngrx , не могу понять, как изменить модель / слияние, просто простые изменения.Я получил данные в ngOnInit:
this.store.dispatch (new GetHeroes ());
this.heroes $ = this.store.select (fromSelectors.getParticipants);
this.store.dispatch (new GetClients ());
this.clients $ = this.store.select (fromSelectors.getClients);
Перед отображением героев $ данных в HTML , мне нужно this.heroes $ .push ({name: 'newName'}) и this.heroes $ .push (this.clients $ [0]) Но мои модели выглядят так: Store: {actionsObserver: {....}}
Я полностью сбит с толку, помогите, пожалуйста, как это сделать, следуя правилам REDUX
Просто некоторые файлы магазина:
//hero.actions.ts
...
export enum HeroActionTypes {
heroGetHeroes = '[Hero] get',
heroGetHeroesSuccess = '[Hero] get heroes success',
.....
}
export class GetHeroes implements Action {
readonly type = HeroActionTypes.heroGetHeroes;
}
export class GetHeroesSuccess implements Action {
readonly type = HeroActionTypes.heroGetHeroesSuccess;
constructor(public payload: Hero[]) {}
}
//hero.effects.ts
...
@Effect()
loadHeroes$ = this.actions$.pipe(
ofType(HeroActionTypes.heroGetHeroes),
switchMap(() =>
this.heroService
.getHeroes()
.pipe(
map(heroes => new GetHeroesSuccess(heroes)),
catchError(error => of(new HeroError(error)))
)
)
);
// hero.reducer.ts
switch (action.type) {
case HeroActionTypes.heroGetHeroes:
return {
...state,
loading: true
};
case HeroActionTypes.heroGetHeroesSuccess:
return adapter.addAll(action.payload, {
...state,
loading: false,
loaded: true
});
// hero.selectors.ts
export const getHeroes = createSelector(getHeroEntities, entities => {
return Object.values(entities);
});
также практически идентичный код для клиентов