I would like to dispatch two actions in one effect. Currently I have to declare two effects to achieve this :
// first effect @Effect() action1$ = this.actions$ .ofType(CoreActionTypes.MY_ACTION) .map(res => { return { type: "ACTION_ONE"} }) .catch(() => Observable.of({ type: CoreActionTypes.MY_ACTION_FAILED })); // second effect @Effect() action2$ = this.actions$ .ofType(CoreActionTypes.MY_ACTION) .map(res => { return { type: "ACTION_TWO"} }) .catch(() => Observable.of({ type: CoreActionTypes.MY_ACTION_FAILED }));
Is it possible to have one action, be the source of two actions via a single effect?
@Effect() loadInitConfig$ = this.actions$ .ofType(layout.ActionTypes.LOAD_INIT_CONFIGURATION) .map<Action, void>(toPayload) .switchMap(() => this.settingsService .loadInitConfiguration() .mergeMap((data: any) => [ new layout.LoadInitConfigurationCompleteAction(data.settings), new meetup.LoadInitGeolocationCompleteAction(data.geolocation) ]) .catch(error => Observable.of( new layout.LoadInitConfigurationFailAction({ error }) ) ) );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With