我正在使用Angular 5和RXJS 5.5
在我做这样的事情之前
getProjectInfo(id): Observable<any> { const URL = `${this.API}/${id}`; return this.http.get(URL) .pipe(map(res => res)),catchError(this.handleServerError); } handleServerError(error: any) { console.log(error.error || error.json() || error); return Observable.throw(error.error || error.json() || error || 'Server error'); }
但现在我收到了这个错误
Error:(21,5) TS2322:Type 'UnaryFunction<Observable<{}>,Observable<any>>' is not assignable to type 'Observable<any>'. Property '_isScalar' is missing in type 'UnaryFunction<Observable<{}>,Observable<any>>'.
我也试过这个
getProjectInfo(id): Observable<any> { const URL = `${this.API}/${id}`; return this.http.get(URL) .pipe(map(res => res)),catchError(err => this.handleError('getProjInfo',URL)); } private handleError(method: String,URL: string): any { return (err: any) => { const errMsg = `error in ${method}() retrieving ${URL}`; console.log(`${errMsg}:`,err); if (err instanceof HttpErrorResponse) { console.log(`status: ${err.status},${err.statusText}`); } return Observable.throw(errMsg); }; }
我究竟做错了什么?
解决方法
请记住您的括号.您返回管道结果和catchEror结果除以,:
return this.http.get(URL) .pipe(map(res => res)),catchError(this.handleServerError);
将一个支架放在自己的位置:
return this.http.get(URL) .pipe( map(res => res),catchError(this.handleServerError) );