Before I had this resolver that just worked fine:
resolve() {
return forkJoin(
this.getData1(),
this.getData2(),
this.getData3()
);
}
Now I have to do something like that which is actually does not work:
resolve() {
return this.actions$
.pipe(
ofActionSuccessful(SomeSctonSuccess),
forkJoin(
this.getData1(),
this.getData2(),
this.getData3()
)
);
}
as I am hitting this error:
Argument of type 'Observable<[any, any, any, any]>' is not assignable to parameter of type 'OperatorFunction'. Type 'Observable<[any, any, any, any]>' provides no match for the signature '(source: Observable): Observable'.
Any ideas how to fix?
Now I heed to return my forkJoin
only after ofActionSuccessful(SomeSctonSuccess)
is taking place https://ngxs.gitbook.io/ngxs/advanced/action-handlers
Use exhaustMap
operator. It maps to inner observable, ignore other values until that observable completes
import { forkJoin } from 'rxjs';
import { exhaustMap } from 'rxjs/operators';
resolve() {
return this.actions$
.pipe(
ofActionSuccessful(SomeSctonSuccess),
exhaustMap(() => {
return forkJoin(
this.getData1(),
this.getData2(),
this.getData3()
)
})
);
}