在调用Web服务之前,我的服务类需要获取dataForUpdate从我的状态调用的属性.目前,我这样做:
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 …Run Code Online (Sandbox Code Playgroud) 嗨,我想知道是否有人知道如何获得商店的当前状态,而无需订阅它.我目前正在使用ngrx来订阅商店并访问其状态来设置组件的属性,但是因为我订阅了这个属性,所以它不断刷新.所以我正在寻找一种获取此属性的方法,以便我可以在不经常刷新的情况下显示数据.
以防万一,这发生在我的组件的构造函数中.
我一直在尝试这样的事情:
_store.select('storeData.correlationData');
订阅时我会这样访问:
_store.subscribe(
(state) => {
this.correlationData = state.storeData.correlationData;
}
);
Run Code Online (Sandbox Code Playgroud)
编辑
申请状态:
export interface ApplicationState {
uiState: UiState;
storeData: StoreData;
}
Run Code Online (Sandbox Code Playgroud) 这是在 ngrx 中获取当前状态的解决方案。这个例子很简单——你只需使用take(1). 但是在 rxjs 文档中take它说:
从可观察序列的开头返回指定数量的连续元素
为什么取第一个值会得到当前状态(即最后一个值)?
此外,我在使用Subject.