Итак на сегодняшний момент у меня есть компонент login, который занимается получением токена от бекенда через сервис authenticationService. В сервисе у меня есть catch, который отдает ошибку функции handleError, она получает error: Response. Там я что то делаю с ней, ну допустим просто в консоль вывожу. А затем мне бы хотелось компоненту назад пробросить ошибку и отоброзить текст пользователю в snackBare. В handleError я делаю return Observable.throw('Ошибка!') Но мне пробрасывает не то что хотелось) Приложу внизу код:
AuthenticationService
logInSystem(login: string, password: string): Observable<{}>{
let urlAuth = 'auth';
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers, method: "post" });
return this.http.post(this._url+urlAuth,{login,password},options)
.map((res:Response) => res.json())
.catch(this.handleError);
}
private handleError(error: any){
let resMsg = '';
if(error.json().username){
resMsg = 'Вы неверно ввели логин или пароль';
}
return Observable.throw(resMsg);
}
Компонент login(Функция, которая вызывается при ngSubmit)
doLogin(event){
this.authenticationService.logInSystem(this.loginForm.value['login'],this.loginForm.value['password']).subscribe(
data => {
console.log(data);
},
err => {
this.snackBar.open(err,'Закрыть',{
duration: 3000,
});
}
);
this.loginForm.reset();
}
Ошибка в консоле:
TypeError: __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__.Observable.throw is not a function
at CatchSubscriber.webpackJsonp.../../../../../src/app/authentication.service.ts.AuthenticationService.handleError [as selector] (authentication.service.ts:30)
at CatchSubscriber.webpackJsonp.../../../../rxjs/operator/catch.js.CatchSubscriber.error (catch.js:104)
at MapSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber._error (Subscriber.js:128)
at MapSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.error (Subscriber.js:102)
at XMLHttpRequest.onLoad (http.es5.js:1231)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:425)
at Object.onInvokeTask (core.es5.js:3881)
at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:424)
at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runTask (zone.js:192)
at ZoneTask.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (zone.js:499)
Я пробрасываю нечто другое. Как правильно сделать проброс ошибки?