Обработка ошибок в ng5

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

register()
  {
    this.authService.register(this.model).subscribe(m=>{
      //console.info("Registeration Successful");
      this.alertify.success("Registeration Successful");
     }, error => {
       console.info(error);
       //console.info("Error while registering.");
       this.alertify.error(error);
     });
  }

В сервисе у меня есть два метода, которые успешно вызывают API, но я получаю сообщение об ошибке CatchSubscriber.AuthService.errorHandler. Вероятно, это связано с уловом. Я хочу получить ошибки из API, и мне нужно показать эти ошибки в пользовательском интерфейсе.

import { Injectable } from '@angular/core';

import { RequestOptions, Response } from '@angular/http';

import { HttpClient, HttpHeaders, HttpParams, HttpRequest, HttpDownloadProgressEvent, HttpErrorResponse } from '@angular/common/http';

import 'rxjs/add/operator/map';

import 'rxjs/add/operator/catch';

import { Observable } from 'rxjs/Observable';


register(model: any)
{
    const httpheaders = new HttpHeaders().set('Content-type','application/json');
    return this.httpClient.post(this.baseUrl + 'Register', model, {headers: httpheaders, responseType: 'json' }).catch(this.errorHandler);
}


private errorHandler(error: HttpErrorResponse)
{
  console.error(error.message);
  return Observable.throw(error.message || 'Server Error');
}

Ошибка, с которой я столкнулся,

TypeError: Observable_1.Observable.throw is not a function
"CatchSubscriber.AuthService.errorHandler"
 at CatchSubscriber.error (catchError.js:105)

at MapSubscriber.Subscriber._error (Subscriber.js:134)

at MapSubscriber.Subscriber.error (Subscriber.js:108)
 at FilterSubscriber.Subscriber._error (Subscriber.js:134)

at FilterSubscriber.Subscriber.error (Subscriber.js:108)

Я проверил и другие ссылки, другие ссылки и попробовал то же самое, но я все еще сталкиваюсь с этой ошибкой

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
119
1

Ответы 1

Используйте catchError, а не catch. Ваш метод регистрации будет выглядеть так:

register(model: any)
{
    const httpheaders = new HttpHeaders().set('Content-type','application/json');
    return this.httpClient
        .post(this.baseUrl + 'Register', model, {headers: httpheaders, responseType: 'json' })
        .pipe(catchError(this.errorHandler));
}

Другие вопросы по теме