type ts2322 not error catch assignable javascript angular typescript rxjs

javascript - ts2322 - La propiedad ''catch'' no existe en el tipo ''Observable<any>''



type observable object>'' is not assignable to type any[]'' (2)

Con RxJS 5.5+, el operador catch ahora está en desuso. Ahora debe usar el operador catchError junto con pipe .

RxJS v5.5.2 es la versión de dependencia predeterminada para Angular 5.

Para cada operador RxJS que importe, incluido catchError , ahora debe importarlo desde ''rxjs / operadores'' y usar el operador de tubería.

Ejemplo de error de captura para una solicitud Http Observable

import { Observable } from ''rxjs''; import { catchError } from ''rxjs/operators''; ... export class ExampleClass { constructor(private http: HttpClient) { this.http.request(method, url, options).pipe( catchError((err: HttpErrorResponse) => { ... } ) } ... }

Observe aquí que catch se reemplaza por catchError y el operador de pipe se usa para componer los operadores de manera similar a lo que está acostumbrado con el encadenamiento de puntos.

Consulte la documentación de pipable sobre pipable (anteriormente conocidos como lettable ) para obtener más información.

En la página de documentación de Angular 2 para usar el servicio Http, hay un ejemplo.

getHeroes (): Observable<Stuff[]> { return this.http.get(this.url) .map(this.extractData) .catch(this.handleError); }

angular2-webpack-starter el proyecto angular2-webpack-starter y agregué el código anterior.

Observable usando

import {Observable} from ''rxjs/Observable'';

Supongo que las propiedades Observable se importan ( .map funciona). Miró el registro de cambios para rxjs.beta-6 y no se menciona nada sobre catch .