Angular项目报错:TypeError: rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable.throw不是函数
解决RxJS中
Observable.throw不是函数的错误 嘿,这个问题我熟!你遇到的TypeError: rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable.throw is not a function错误,是因为RxJS 6及以后的版本里,Observable.throw这个方法已经被移除啦,换成了独立的throwError操作符。我给你一步步说怎么改:
第一步:更新RxJS的导入语句
原来只导入了Observable,现在要把throwError也加进去:import { Observable, throwError } from 'rxjs';第二步:替换错误处理里的
Observable.throw
把handleErrorObservable方法里的旧写法换成新的throwError:private handleErrorObservable (error: Response | any) { return throwError(error.message || error); }额外小修正:修复URL的赋值语法
你代码里的url : "http://localhost:4200/assets/data/userdata.json";用了冒号:,这是类型标注的语法,但这里是直接赋值,应该改成等号=:url = "http://localhost:4200/assets/data/userdata.json";
修改后的完整代码
import { Injectable } from '@angular/core'; import { Http, Response } from '@angular/http'; import { Observable, throwError } from 'rxjs'; import { map, 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 throwError(error.message || error); } }
内容的提问来源于stack exchange,提问作者Jitendra Ahuja
相关产品推荐
相关产品推荐

