TypeError: rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable.throw is not a function

给你一囗甜甜゛ 提交于 2019-12-06 22:27:35

问题


Here is my file userdata.service.ts :

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import {Observable} from 'rxjs';
import { map } from "rxjs/operators";
import { catchError } from 'rxjs/operators';
import { Data } from './userdata';

@Injectable()
export class UserDataService {

  url : "http://localhost:4200/assets/data/userdata.json";
  constructor(private http:Http) { }  

  getDataWithObservable() : Observable<any>{
      return this.http.get(this.url)
            .pipe(
              map(this.extractData),
              catchError(this.handleErrorObservable)
            );
  }

    private extractData(res: Response) 
    {
        let body = res.json();      
        return body;
    }

    private handleErrorObservable (error: Response | any) 
    {   
        return Observable.throw(error.message || error);
    }
}

I m getting the following Error :

TypeError: rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable.throw is not a function


回答1:


Import:

import { throwError } from 'rxjs';

Usage:

return throwError(err);



回答2:


Observable.throw() has been deleted.

Try using Observable.throwError(). Apparently the definitions aren't up to date just yet.

You can import it using import { throwError } from 'rxjs';




回答3:


In Angular 8 use

throwError(new NotFoundError("Resource Not Found."))

Don't use

Observable.throw(new NotFoundError("Resource Not Found."))

Complete example

catchError((error:Response) => {

    if(error.status === 404){

      return throwError(new NotFoundError("Resource Not Found."));

    }

    return throwError(new AppError(error))

})



来源:https://stackoverflow.com/questions/50602511/typeerror-rxjs-webpack-imported-module-2-observable-throw-is-not-a-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!