在我的应用程序中,我跟踪会话时间
@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'));
答案 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>){}
}