Подтвердить что ты не робот

Угловое - res.json() не является функцией

У меня проблема с моей службой API. Эта служба подключается к моему узлу backend api.

Ошибка говорит

ERROR TypeError: res.json is not a function

Я получаю эту ошибку после недавнего обновления этой службы, чтобы использовать HTTPClient вместо Http. Я получаю этот ответ, потому что им не хватает старого http с новым? если в этом случае есть новый ответ и как его использовать?

import { Injectable } from '@angular/core';
import { environment } from '../../environments/environment';
import { HttpHeaders, HttpClient, HttpParams } from '@angular/common/http';
import { Response } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

import { JwtService } from './jwt.service';

@Injectable()
export class ApiService {
  constructor(
    private http: HttpClient,
    private jwtService: JwtService
  ) {}

  private setHeaders(): HttpHeaders {
    const headersConfig = {
      'Content-Type': 'application/json',
      'Accept': 'application/json'
    };
    if (this.jwtService.getToken()) {
      headersConfig['Authorization'] = this.jwtService.getToken();
    }
    return new HttpHeaders(headersConfig);
  }

  private formatErrors(error: any) {
     return Observable.throw(error.json());
  }

  get(path: string, httpParams: HttpParams = new HttpParams()): Observable<any> {
    return this.http.get('${environment.api_url}${path}', { headers: this.setHeaders(), params: httpParams })
    .catch(this.formatErrors)
    .map((res: Response) => res.json());
  }

  put(path: string, body: Object = {}): Observable<any> {
    return this.http.put(
      '${environment.api_url}${path}',
      JSON.stringify(body),
      { headers: this.setHeaders() }
    )
    .catch(this.formatErrors)
    .map((res: Response) => res.json());
  }

  post(path: string, body: Object = {}): Observable<any> {
    return this.http.post(
      '${environment.api_url}${path}',
      body,
      { headers: this.setHeaders() }
    )
    .catch(this.formatErrors)
    .map((res: Response) => res.json());
  }

  delete(path): Observable<any> {
    return this.http.delete(
      '${environment.api_url}${path}',
      { headers: this.setHeaders() }
    )
    .catch(this.formatErrors)
    .map((res: Response) => res.json());
  }
}
4b9b3361

Ответ 2

Не нужно использовать этот метод:

 .map((res: Response) => res.json() );

Просто используйте этот простой метод вместо предыдущего метода. надеюсь, вы получите свой результат:

.map(res => res );

Ответ 3

Вы можете удалить всю строку ниже:

 .map((res: Response) => res.json());

Не нужно использовать метод карты вообще.