error TS2339: Property 'catchError' does not exist on type 'Observable<any>'
14,236
Solution 1
catchError
needs to be imported and then used within .pipe
:
import {catchError} from 'rxjs/operators';
return this.http.get(this.url)
.pipe(
map(this.extractData),
catchError(this.handleErrorObservable)
);
Solution 2
You need to use it inside pipe
like this:
getBooksWithObservable(): Observable<Book[]> {
return this.http.get(this.url)
.pipe(map(this.extractData),catchError(this.handleErrorObservable));
}
Solution 3
catchError
must be inside pipe
.
import { Observable, pipe } from 'rxjs';
import { map, catchError } from 'rxjs/operators';
getBooksWithObservable(): Observable<Book[]>
{
return this.http.get(this.url)
.pipe(
map(this.extractData),
catchError(this.handleErrorObservable)
);
}
Author by
Jitendra Ahuja
A coding Enthusiast, interested in getting and sharing knowledge around.
Updated on June 05, 2022Comments
-
Jitendra Ahuja almost 2 years
Here is my code in book.service.ts :
import { Injectable } from '@angular/core'; import { Http, Response } from '@angular/http'; import {Observable} from 'rxjs'; import { Book } from './book'; import { map } from "rxjs/operators"; import { catchError } from 'rxjs/operators'; //import { Component, OnInit } from '@angular/core'; //import {HttpClient} from "@angular/common/http"; //import { Observable } from 'rxjs/Observable'; //import 'rxjs/add/operator/map'; //import 'rxjs/add/operators/catch'; //import 'rxjs/operators/toPromise'; @Injectable() export class BookService { url = "http://localhost:4200/assets/data/books.json"; constructor(private http:Http) { } getBooksWithObservable(): Observable<Book[]> { return this.http.get(this.url) .pipe(map(this.extractData)) .catchError(this.handleErrorObservable); } getBooksWithPromise(): Promise<Book[]> { return this.http.get(this.url).toPromise() .then(this.extractData) .catch(this.handleErrorPromise); } private extractData(res: Response) { let body = res.json(); return body; } private handleErrorObservable (error: Response | any) { console.error(error.message || error); //console.log("Error in Observable"); return Observable.throw(error.message || error); } private handleErrorPromise (error: Response | any) { console.error(error.message || error); return Promise.reject(error.message || error); } }
And I m getting the Error here:
ERROR in src/app/book.service.ts(26,18): error TS2339: Property 'catchError' does not exist on type 'Observable'.
Well the Error is in 26th line and that is :
.catchError(this.handleErrorObservable);
I've tried a lot of things but nothing worked... Can anybody solve this?
Did with 'catch' but didn't work, so then I go for 'catchError' but still, there is this error...
-
Jitendra Ahuja almost 6 yearsYa got it bro ! done with it ... Thank you so much, btw :-)
-
Krack almost 5 yearspath incorrect
import {catchError} from 'rxjs/operators
-
Chrillewoodz almost 5 years@Krack Depends which RxJS version you're on.