получение TypeError: .finalize не является функцией в Rxjs6 - PullRequest
0 голосов
/ 29 мая 2018

В следующей функции я получаю ошибку времени выполнения TypeError: this.authService.authServiceSigninUser(...).map(...).catch(...).finalize is not a function.

Вопрос 1) Почему Typescript не перехватывает эту ошибку во время компиляции?Как я могу поймать эту ошибку во время компиляции.

Вопрос 2) Как я могу устранить ошибку?Я пытался использовать finally и finalize, но оба не работают.

public signinUser(user:UserSigninInfo):any{

    this.loaderService.show(); //this shows a spinner
    return this.authService.authServiceSigninUser(user)
      .map(response=>{
        console.log('response from backend service',response);
        let result= <HttpResponse<any>>response; 
        let authToken = result.headers.get("x-auth-token")
        if(authToken == null) {
          console.log("no authToken")
        } else {
          console.log("authToken is ",authToken)
          localStorage.setItem('id_token', authToken);
        }
        return result;
      })
      .catch(this.handleError)
    .finally(()=> this.loaderService.hide()) //hide the spinner
  }

1 Ответ

0 голосов
/ 29 мая 2018

Импорт этой строки в ваш компонент

import {finalize, catchError, tap} из 'rxjs / operator';

Попробуйте этот код

 public signinUser(user:UserSigninInfo):any{

    this.loaderService.show(); //this shows a spinner
    return this.authService.authServiceSigninUser(user)
      .pipe(tap(response=>{
        console.log('response from backend service',response);
        let result= <HttpResponse<any>>response; 
        let authToken = result.headers.get("x-auth-token")
        if(authToken == null) {
          console.log("no authToken")
        } else {
          console.log("authToken is ",authToken)
          localStorage.setItem('id_token', authToken);
        }
        return result;
      })
      ,catchError(this.handleError)
    ,finalize (()=> this.loaderService.hide())); //hide the spinner
  }
...