如何在ngrx/effects中执行if/else?

Hon*_*iao 6 typescript ngrx angular

我正在使用ngrx/effects.我想根据foo商店中的状态调度不同的操作.

这就是我现在正在做的事情:

 @Effect() foo1$ = this.updates$
    .whenAction(Actions.FOO)
    .filter(obj => !obj.state.product.foo)
    .map<string>(toPayload)
    .map(x => ({ type: Actions.BAR1, payload: { x }}));

  @Effect() foo2$ = this.updates$
    .whenAction(Actions.FOO)
    .filter(obj => obj.state.product.foo)
    .map<string>(toPayload)
    .map(x => ({ type: Actions.BAR2, payload: { x }}));
Run Code Online (Sandbox Code Playgroud)

有没有办法使用RxJS 5个运营商如的方式partition,groupBy,if,case这个岗位?我现在无法正确使用它.

And*_*ang 6

有2个单独的效果源是好的.否则简单:

@Effect() foo$ = this.updates$
    .whenAction(Actions.FOO)
    .map(({action, state}) => {
        if (state.product.foo) {
            return { type: Actions.CHAT_GET_MESSAGES2, payload: { action.payload }};
        } else {
            return { type: Actions.CHAT_GET_MESSAGES, payload: { action.payload }};
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要在其中一个条件之后通过rxjs管道执行更多操作,这无济于事. (3认同)