Что такое RXJS 6 для обработки http Observables? - PullRequest
2 голосов
/ 13 июня 2019

Я заметил, что мой код не работает, когда я использую его в новом проекте:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';

import { TypeAndCountURL } from '@app/constants';
import { HttpErrorService } from '@app/services/http-error.service';
import { TypeAndCountResponseBody, TypeAndCountRequestBody } from '@app/models/type-and-count/bodies.interface';

@Injectable({
  providedIn: 'root'
})
export class ApiService {
  constructor (private http: HttpClient, private httpErrorService: HttpErrorService) {}

  postTypeAndCountRequest(typeAndCountRequestBody: TypeAndCountRequestBody): Observable<TypeAndCountResponseBody> {
    return this.http.post<TypeAndCountResponseBody>(TypeAndCountURL, typeAndCountRequestBody).pipe(
      catchError(this.httpErrorService.handleError<TypeAndCountResponseBody>('postTypeAndCountRequest'))
    );

  }
}

конкретно я получаю Cannot find name 'catchError'. Did you mean 'RTCError'?ts(2552)

Читая об этом, я вижу, что могу решить проблему, импортировав ее отдельно (из rxjs / operator .., что хорошо, но) .. но также и то, что вся эта структура является режимом сжатия для rxjs 5 ... как RXJS 6 обрабатывает ответ об ошибке?

1 Ответ

4 голосов
/ 13 июня 2019

Попробуйте импортировать вот так

import { catchError } from "rxjs/operators";

Обновите что-нибудь вроде этого?

fetchUser() {
   this.userService.getProfile()
      .subscribe(
         (data: User) => this.userProfile = { ...data }
          , // success path
          error => this.error = error // error path
   );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...