Я новичок с использованием Rxjs и Ngrx , и у меня возникает проблема, что всякий раз, когда возникает ошибка аутентификации, отображается alert()
с сообщением об ошибке, возвращенным изFirebase.
Проблема в том, что при возникновении ошибки я просто хочу отобразить сообщение с ошибкой ... оно входит в бесконечный цикл, и использование памяти увеличивается, и я вынужден закрыть приложение.
Когда я правильно ввожу адрес электронной почты и пароль, приложение ведет себя правильно ... Проблема возникает, когда возвращается ошибка Firebase.
Бесконечный цикл не происходит, если я несоздайте Effect()
для AUTH_ERROR
... и я получаю сообщение об ошибке в состоянии просмотра приложения Redux DevTools .
@Effect()
loginWithEmailPassword: Observable<Action> = this._actions.pipe(
ofType(authActions.LOGIN_EMAIL_PASSWORD),
map((action: authActions.LoginEmailPassword) => action.payload),
switchMap(data => from(this._angularFireAuth.auth
.signInWithEmailAndPassword(data.email, data.password)).pipe(
switchMap(response => forkJoin([
from(response.user.getIdTokenResult(true)),
of(response.user)
])),
map(([token, user]) => {
if (user) {
this._router.navigate(['']);
return new authActions.Authenticated({
admin: token.claims.admin,
profissional: token.claims.profissional,
assinante: token.claims.assinante,
firestoreCollection: token.claims.firestoreCollection,
user: user
});
}
}),
catchError((error) => of(new authActions.AuthError({ error: error })))
))
)
@Effect()
authError$: Observable<Action> = this._actions.pipe(
ofType(authActions.AUTH_ERROR),
tap(action => alert(action.payload.error.message))
)