2016-09-02 3 views
2

私はngrx/effectsを使用しています。私は店内のfoo州に基づいて異なる行動を送りたい。ngrx/effectsでif/elseを実行するにはどうすればよいですか?

これは私が今やっている方法です:

@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 }})); 

は5つの事業者partitiongroupByifthis postcaseようRxJSを使用する方法はありますか?私は今それを正しく使用することはできません。

答えて

5

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 }}; 
     } 
    }); 
関連する問題