我的服务类在调用Web服务之前需要从我的状态获取名为dataForUpdate
的属性。目前,我正在做这样的:如何使用@ ngrx/store获取State对象的当前值?
constructor (public _store: Store<AppState>,
public _APIService:APIService) {
const store$ = this._store.select ('StateReducer');
.../...
let update = this.actions$.filter (action => action.type==UPDATE)
.do((action) => this._store.dispatch({type: REDUCER_UPDATING, payload : action.payload }))
*** GET STATE ***==> .mergeMap (action => store$.map ((state : AppState)=> state.dataForUpdate).distinctUntilChanged(),
(action, dataForUpdate) {
return { type:action.type, payload : {employee:action.payload, dataForUpdate :dataForUpdate } };
})
* AND CALL API *==> .mergeMap (action =>this._APIService.updateEmployee(action.payload.employee, action.payload.dataForUpdate),
(action, APIResult) => { return { type:REDUCER_UPDATED }})
.share();
.../...
let all = Observable.merge (update, ....);
all.subscribe ((action:Action) => this._store.dispatch (action));
}
我使用angular2店 - 例如(https://github.com/ngrx/angular2-store-example/blob/master/src/app/users/models/users.ts)为指导,以跟随。
我想知道是否存在更好(更清洁)的方式?
活生生的例子:对@ NGRX /存储1.x版https://plnkr.co/edit/WRPfMzPolQsYNGzBUS1g?p=preview
那么容易做到。例如:this._store.value.StateReducer.dataForUpdate –
你让它变得有点复杂了(: – Sasxa
我同意!为什么我的感觉是更简单的解决方案必须存在,谢谢你的帮助 –