Если вы пытаетесь выйти из эффекта без отправки действия, вам нужно установить disaptach
в false
. Вы украшаете свой эффект с помощью @Effect({ dispatch: false })
, а затем везде, где вы возвращаете действие, вам нужно вызвать this.store.dispatch(/* Some Action */);
самостоятельно.
@Effect({ dispatch: false })
login$: Observable<Action> = this.actions$
.instanceOf(LoginActions.LoginAction)
.switchMap(
action => {
this.loginHttpService.login(action.payload)
.map( (res: any) => {
if (res && res.message !== 'Invalid Login') {
// Logic omitted
this.permissionsService.loadPermissions(perm, () => {
// Dispatch an action
this.store.dispatch(new LoginActions.LoginSuccessAction(true)));
});
}
}).catch( (e:any) => {
this.store.dispatch(new LoginActions.LoginFailureAction(true)));
});
});
constructor(private store: Store<any>) {}