Я новичок в 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)
Я проверил и другие ссылки, другие ссылки и попробовал то же самое, но я все еще сталкиваюсь с этой ошибкой
Используйте 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));
}