В настоящее время я изучаю использование хранилища ngrx (v. 4.0.3) для управления состоянием. Кажется, это отличный проект.
Я столкнулся с небольшим ударом по дороге, пытаясь инициализировать состояние моего магазина. документация выглядит довольно просто, но все же я не могу понять, где я ошибаюсь.
Вот соответствующие фрагменты кода:
в app.state.ts
export interface AppState {
searchText: string;
}
В поиске-text.reducer.ts
export const UPDATE = 'UPDATE';
export class UpdateSearchTextAction implements Action {
readonly type: string = UPDATE;
constructor(public readonly text: string) {}
}
export function searchTextReducer(state: string, action: UpdateSearchTextAction) {
switch(action.type) {
case UPDATE:
return action.text;
}
};
В app.module.ts
export const reducers: ActionReducerMap<AppState, UpdateSearchTextAction> = {
searchText: searchTextReducer
};
export const initialState: InitialState<AppState> = {
searchText: 'sds'
};
....
imports: [
....
StoreModule.forRoot(reducers, initialState)
]
в каком-то компоненте
constructor(private store: Store<AppState>) {
this.searchBoxText = store.select('searchText');
this.searchBoxText.subscribe(text => console.log('value = [' + text + "]"));
}
Итак, когда приложение загружается, я ожидаю увидеть в консоли следующее:
value = [sds]
но я вижу
value = [undefined]
Позже, как только я начну вводить ввод, который запускает UpdateSearchTextAction, консоль действительно регистрирует правильное значение. Итак, похоже, я правильно настроил магазин.
Вероятно, мне не хватает чего-то очень простого. Кто-нибудь может дать совет?