У меня есть очень простой вопрос относительно эффектов @ngrx: как игнорировать ошибку, которая возникает во время выполнения эффекта, так что она не влияет на выполнение будущего эффекта?
Моя ситуация такова: у меня есть действие (LOGIN) и эффект, который прослушивает это действие. Если в этом эффекте произошла ошибка, я хочу проигнорировать ее. Когда LOGIN отправляется второй раз после этой ошибки, эффект должен выполняться второй раз.
Моя первая попытка сделать это:
@Effect()
login$ = this.actions$
.ofType('LOGIN')
.flatMap(async () => {
console.debug('LOGIN');
// throw an error
let x = [];x[0]();
})
.catch(err => {
console.error('Error at login', err);
return Observable.empty();
});
Отправка LOGIN в первый раз выбрасывает и ловит ошибку, как и ожидалось. Однако, если я снова отправлю логин после этого, ничего не произойдет; эффект не выполняется.
Поэтому я попробовал следующее:
.catch(err => {
return this.login$;
});
но это приводит к бесконечному циклу... Вы знаете, как поймать ошибку, не предотвращая последующее выполнение эффекта?