簡體   English   中英

帶有Observable的Angular5 handleErrors:錯誤Observable.throw不是函數

[英]Angular5 handleErrors with Observable : error Observable.throw is not a function

您能幫我解決這個錯誤嗎?

core.js:1542錯誤TypeError:rxjs__WEBPACK_IMPORTED_MODULE_3 __。Observable.throw不是函數

Angular CLI:6.0.8 / rxjs 6.2.1

import { Injectable } from '@angular/core';
import { User } from './../classes/user';
import { AppSettings } from './appSettings';
import { HttpClient,HttpHeaders, HttpParams } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError, retry } from 'rxjs/operators';

@Injectable({
      providedIn: 'root'
})

export class LoginService {

      constructor(private http: HttpClient){ }

      login(user:User): Observable<User> {                               
            return this.http.post<User>(AppSettings.BASE_URL + "/login",user)
            .pipe(catchError(this.handleServerError));   
      }

      handleServerError(error: any  | any) {
            console.log(error.error || error.json() || error);
            return Observable.throw(error.error || error.json() || error || 'Server error');  <<< ERROR
      }

}

我已經這樣解決了:

app.module.ts

 import {HttpClientModule} from '@angular/common/http';
 .
 .
 . 
 imports: [
    BrowserModule,
    HttpClientModule
  ]

服務/登錄

import { Injectable } from '@angular/core';
import { User } from './../classes/user';
import { AppSettings } from './appSettings';
import { HttpClient,HttpHeaders, HttpParams } from '@angular/common/http';
import {  throwError } from 'rxjs';
import { Observable, Subject, ReplaySubject, from, of, range } from 'rxjs';
import { map, filter, switchMap } from 'rxjs/operators';
import { catchError, retry } from 'rxjs/operators';

const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type':  'application/json',
        'Authorization': 'my-auth-token'
      })}


@Injectable({
      providedIn: 'root'
})

export class LoginService {

      constructor(private http: HttpClient){

      }

      login(user:User): Observable<User> {                               
            return this.http.post<User>(AppSettings.BASE_URL + "/login",user)
            .pipe(catchError(this.handleServerError));   
      }

      handleServerError(error: any | any ) {
            console.log(error.error || error.json() || error);
            return throwError(error.error || error.json() || error || 'Server error');
      }

}

login.component.ts

 import { LoginService } from '../../services/login';

this.loginService.login(new User("admin","admin")).subscribe(                  
                  user => {
                        //to do ; 
                  },
                  error => {                                                  
                         throw error;
                  }                  
  );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM