Ребят как не прерывать Observable когда сервер ответил с ошибкой?

catchError() прерывает все равно

russian programming angular

13 ответов

Что значит "прерывает"?

Alexander- Автор вопроса
Oleg Safonov
Что значит "прерывает"?

Не идёт больше поток данных после ошибки

Alexander
Не идёт больше поток данных после ошибки

А что должно дальше идти, если запрос выполнен и он всего один?

Alexander- Автор вопроса
Oleg Safonov
А что должно дальше идти, если запрос выполнен и о...

Человек вводит данные в форму и форма летит на бек и бек отвечает ему ошибкой что данные не корректны, и так повторяется на каждое нажатие клавиши пока ответ 200 не придёт

Alexander
Человек вводит данные в форму и форма летит на бек...

Покажите код. Классический httpClient завершает поток после возврата результата вне зависимости от успешности

Alexander
Человек вводит данные в форму и форма летит на бек...

У формы нет никакой валидации? Бэк возвращает ошибку когда нет найденных результатов?

Alexander- Автор вопроса
Vladislav
У формы нет никакой валидации? Бэк возвращает ошиб...

да, форма не может знать правильно ли ввели секретный код из 5ти символов, когда вводятся 5 символов форма отправляется но если ееловек ошибся и хочет снова ввести 5 символов то форма стрим уже ничего не шлет

Alexander- Автор вопроса
Oleg Safonov
Покажите код. Классический httpClient завершает по...

this.CodeForm.get('сode').valueChanges .pipe( filter(x => x.length >= 5), switchMap(сode => this.profileFacade.approvePhoneEdit(сode)), catchError(x => { // false notificationService.fail("введен неверный код") return EMPTY; }), takeUntil(this._destroy$)

Alexander
this.CodeForm.get('сode').valueChanges .pipe( ...

Воткните catcherror в switchmap мб?

Alexander- Автор вопроса
Oleg Safonov
Воткните catcherror в switchmap мб?

и на что мне переключать поток? на самого себя?

Короче, сейчас return EMPTY комплитит поток целиком. Сделайте switchMap(сode => this .profileFacade .approvePhoneEdit(сode) .pipe(catchError(x => { // false notificationService.fail("введен неверный код") return EMPTY; })), В таком виде Чтоб он комплитил только внутренний поток, а не целиком. Я думаю такое сработает. А что вообще сервер возвращает в случае успеха, какой тип?

Похожие вопросы