Это мой второй вопрос, связанный с ngrx / store на сегодняшний день: (
Я использую ngrx / store в своем проекте Angular 5. Состояние приложения, которое я храню, выглядит примерно так (только для иллюстративных целей)
class AppState{
private customerList: Customer [];
private selectedCustomer: Customer;
private countriesOperational: Country [];
}
Я создал один редуктор для объекта состояния следующим образом:
export function CustomerReducer(state: AppState = new AppState(), action: Action
){
switch(action.type){
case 'updateSelectedCustomer':
return {...state, selectedCustomer:action.payload}
//other cases here
default:
return state;
}
}
Мой модуль имеет следующее:
StoreModule.forRoot({applicationState:CustomerReducer});
В моем компонентекогда я делаю store.select(state => state)
, полученный объект оборачивается во внутренний объект applicationState (из forRoot).
Поэтому я не могу использовать строго типизированные значения, поскольку applicationState не является частью AppState;он возвращается только редуктором. Я должен сделать что-то вроде этого:
let state$:Observable<any> = store.select(state => state);
state$.subscribe(newState => this.currentState = newState.applicationState);
на эту же проблему ссылаются здесь : есть ли здесь способ использовать строго типизированные значенияиз any
. Например, это должно быть что-то вроде:
let state$:Observable<AppState> = store.select(state => state);
state$.subscribe(newState => this.currentState = newState);