简体   繁体   English

带有Observable的Angular5 handleErrors:错误Observable.throw不是函数

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

could you please help me to fix this error ? 您能帮我解决这个错误吗?

core.js:1542 ERROR TypeError: rxjs__WEBPACK_IMPORTED_MODULE_3__.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 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
      }

}

I've solved like that: 我已经这样解决了:

app.module.ts app.module.ts

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

service/login.ts 服务/登录

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 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