Как пробросить ошибку к компоненту?

Итак на сегодняшний момент у меня есть компонент 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)


Я пробрасываю нечто другое. Как правильно сделать проброс ошибки?
  • Вопрос задан
  • 305 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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