ngrx effects combine action resposne with multiple selectors values

398 Views Asked by At

I have an Action defined MyAction.loadDataSuccess. When ever loadDataSuccess is success ,we need to dispatch other three action.that am trying to implemented here. Other Actions needed loadDataSuccess response along with selectData1 and selectData2 Here is my code.

   loadSuccess$ = createEffect(() => this.actions$.pipe(
    ofType(MyActions.loadDataSuccess),
    concatMap((action: any) => of(action).pipe(
      withLatestFrom(this.store$.select(selectData1)),
      withLatestFrom(this.store$.select(selectData2))
    )),
    switchMap(([payload, data1,data2]: any) => [
      FileActions.setSelectedName({ fileName: payload.name[0] }),
      PFDataActions.loadPFData({ data1: data1, data2:data2 }),
      OtherDataActions.loadOtherData(
        { data1: data1, data2:data2, otherName: ''}
      ),
      MainDataActions.loadMainData(
        { data1: data1, data2:data2, otherName: '' }
      ),
    ])
  ));

The above code was working when we have only one withLatestFrom. Now the above code throwing FileActions.setSelectedName undefined.

How can we combine action response with two selector values i have combined both selectData1 and selectData2 into a single selector,but that won't worked.

Some one have any solutions, feel free to update

Note: ngrx version-13

1

There are 1 best solutions below

4
On

withLatestFrom can take multiple source observables: https://rxjs.dev/api/operators/withLatestFrom

ofType(MyActions.loadDataSuccess),
withLatestFrom(this.store$.select(selectData1), this.store$.select(selectData2)),
switchMap(([payload, [data1,data2]]: any) =>