ngrx / effects使用具有来自状态

时间:2017-08-30 12:35:03

标签: angular rxjs ngrx ngrx-effects

在我的应用程序中,我跟踪会话时间

  @Effect()
  session$: Observable<Action> = this.actions$
    .ofType(authAction.RESET_SESSION)
    .switchMap(_ => Observable.of({ type: authAction.LOGOUT })
                .delay(600000);

*每次调用RESET_SESSION动作时,注销动作都会等待10分钟。

在我的应用程序中,我从服务器获取会话时间并在登录后存储状态。我怎么能在延迟时使用这个商店价值?! (因为在ngrx商店中返回可观察而不是状态对象)

类似的东西:

 @Effect()
  session$: Observable<Action> = this.actions$
    .ofType(authAction.RESET_SESSION)
    .switchMap(_ => Observable.of({ type: authAction.LOGOUT })
                .delay(this.store.pluck('auth','sessionTime'));

1 个答案:

答案 0 :(得分:2)

您需要通过构造函数将商店注入到Effects中。类似的东西:

@Injectable()
export FooEffects {
   @Effect()
    session$: Observable<Action> = this.actions$
    .ofType(authAction.RESET_SESSION)
    .mergeMap(_ => this.store.select(getSessionTime)) //getSessionTime would be a selector
    .switchMap(delay => Observable.of({ type: authAction.LOGOUT }).delay(delay));

   ctor(
   private actions$: Actions,
   private store: Store<rootState>){}
}