В настоящее время я работаю над простым тестовым приложением, чтобы узнать больше о @ ngrx / store. У меня есть модуль TrainingModule, который должен хранить некоторые упражнения и дополнительную информацию. Код работает, но я стараюсь его улучшить. В настоящее время у меня есть функциональный модуль, который выглядит так:
@NgModule({
imports: [
CommonModule,
TrainingRoutingModule,
StoreModule.forFeature('exercises', exerciseReducer)
],
declarations: [
TrainingDashboardComponent,
TrainingCoreComponent,
TrainingNavComponent,
TrainingPlanComponent,
ExerciseOverviewComponent,
ExerciseListComponent]
})
export class TrainingModule {
}
и мой редуктор, который выглядит так:
export interface ExerciseState {
exercises: IExercise[];
}
export interface State extends fromRoot.State {
'exercises': ExerciseState;
}
export const initialState: ExerciseState = {
exercises: [
{id: 1, name: 'Exc 1'},
{id: 2, name: 'Exc 2'}
]
};
export function exerciseReducer(state: ExerciseState = initialState, action: any): ExerciseState {
switch (action.type) {
default:
return state;
}
}
export const getExerciseState = createFeatureSelector<ExerciseState>('exercises');
export const getExercises = createSelector(getExerciseState, state => state.exercises);
Все идет нормально. В моем шаблоне я выбираю упражнение из магазина с этим
exercise$: Observable<IExercise[]>;
constructor(private store: Store<State>) { }
ngOnInit() {
this.exercise$ = this.store.select(getExercises);
}
Итак, что я хочу сделать, теперь объединить мои редукторы, чтобы мне не приходилось добавлять все подобные редукторы.
StoreModule.forFeature('exercises', exerciseReducer);
StoreModule.forFeature('sample', sampleReducer);
StoreModule.forFeature('sample1', sampleReducer1);
Во всех моих модулях. Пытался собрать все редукторы с
export const trainingReducers = {
'exercise': exerciseReducer
};
а также
StoreModule.forFeature('training', trainingReducers)
Но это дало мне сообщение об ошибке Cannot read property 'упражнения' в консоли. Может быть, кто-то может помочь мне понять, как мне собрать все редукторы из модуля функции и создать для этого правильный селектор.