Ваша внешняя карта должна быть mergeMap
, поскольку вы отображаете действие в новый поток (в случае, если условие выполняется).
Это можно исправить следующим образом:
import { of } from 'rxjs';
import {map, mergeMap } from 'rxjs/operators';
@Effect()
logoutConfirmation$: Observable<Action> = this.actions$
.ofType<Logout>(AuthActionTypes.Logout)
.pipe(
mergeMap(action => {
if (action.confirmationDialog) {
return this.dialogService
.open(LogoutPromptComponent)
.afterClosed()
.pipe(
map(confirmed => confirmed ? new LogoutConfirmed():new LogoutCancelled())
);
} else {
return of(new LogoutConfirmed());
}
})
);
В качестве примечания всегда объявляйте явный тип ваших эффектов, чтобы получать ошибки при компиляции, а не во время выполнения.