如何使用@ngrx/store获取State对象的当前值?

80

在调用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 {
          type: REDUCER_UPDATED
        }
      })
    .share();


  .../...

  let all = Observable.merge(update, ....);
  all.subscribe((action: Action) => this._store.dispatch(action));

}

我正在使用angular2-store-example (https://github.com/ngrx/angular2-store-example/blob/master/src/app/users/models/users.ts)作为指南。
我想知道是否存在更好(更清晰)的方法?
实时示例:https://plnkr.co/edit/WRPfMzPolQsYNGzBUS1g?p=preview
11个回答

-2

这对我来说是工作。我将获取我的对象数据。

this.store.select('dataStore').subscribe(data => { 
          console.log(data)
 }

1
每次选择更改时都会调用它,你应该在某个地方取消订阅,因为它不是完整的Observable。 - Mina W Alphonce
1
实际上,我只需要一个快速的解决方案,这个做到了。 - John Q

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接