javascript - retry - typescript angular 6 observable




A propriedade 'catch' não existe no tipo 'Observable<any>' (2)

Na página de documentação do Angular 2 para usar o serviço Http, há um exemplo.

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

Eu angular2-webpack-starter o projeto angular2-webpack-starter e adicionei o código acima eu mesmo.

Eu importei usando Observable

import {Observable} from 'rxjs/Observable';

Estou assumindo que as propriedades Observable são importadas (trabalhos .map ). Olhei para o changelog de rxjs.beta-6 e nada é mencionado sobre catch .


Com o RxJS 5.5+, o operador catch agora está obsoleto. Agora você deve usar o operador catchError em conjunto com o pipe .

RxJS v5.5.2 é a versão de dependência padrão para o Angular 5.

Para cada Operador RxJS que você importar, incluindo catchError você deve agora importar de 'rxjs / operators' e usar o operador pipe.

Exemplo de erro de captura para uma solicitação HTTP

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 aqui que catch é substituído por catchError e o operador de pipe é usado para compor os operadores de maneira semelhante catchError com a qual você está acostumado.

Veja a documentação do rxjs em operadores pipable (anteriormente conhecidos como lettable ) para mais informações.






rxjs