Я пытаюсь использовать следующие услуги в моем коде:Angular2: res.json не является функция
import {Injectable} from '@angular/core';
import {Http,Response} from "@angular/http";
import 'rxjs/Rx';
@Injectable()
export class HttpService{
constructor(private http : Http){}
getData(){
return this.http.get("URI")
.map((res: Response) => res.json() );
}
}
Проблема в том, во время выполнения он жалуется:
res.json is not a function
I определили тип данных Реза как ответ, но все еще жалуется
.map((res: Response) => res.json() )
если я заменить карту с подписываться это работает отлично:
.subscribe(res =>{
res.json();
console.log("City is:"+ res.json().city.name)
});
Вы уверены, что ваш запрос возвращает JSON? –
Да, я уверен. – Salman
У меня была эта проблема, когда у меня была функция functionA(), вызывающая функцию B(), и оба использовали вызов map(). К тому времени, когда функция A map() была названа картой B, она уже преобразовала res.json() в массив объектов, что означало, что A не имеет доступного json. Исправлено было удаление вызова map() из функцииB(), поэтому вызывалась только карта верхнего уровня() –