угловая 5 извлекать данные из ответа - PullRequest
0 голосов
/ 18 декабря 2018

product-service.ts

provinsi():Observable<any> {
return this.http.get('http://127.0.0.1:8000/api/provinsi').pipe(
map(this.extractData),
catchError(this.handleError));
}
public extractData(res: Response) {
let body = res;
return body || {};
}

restaurant.ts

provinsi() {
    this.pservice.provinsi()
        .subscribe(data => this.provinsis = data.results);
}

json

{"results":[{"province_id":"1","province":"Bali"},{"province_id":"2","province":"Bangka Belitung"} . . .

Мне нужен способ извлечь JSON в угловую /Ионное представление, когда я запускаю свои приложения, по-прежнему появляется «ошибка времени выполнения»

1 Ответ

0 голосов
/ 18 декабря 2018

Ваша проблема в extractData.Вы возвращаете объект Response, поэтому при использовании у вас нет ожидаемого json.Чтобы решить эту проблему, получите json из объекта Response, используя метод .json():

 public extractData(res) {
    let body = res.json();
    return body || {};
 }

Совет : Вы можете использовать функцию ES6, называемую деструктуризацией, при доступе кJSON свойство.Например:

provinsi() {
    this.pservice.provinsi()
        .subscribe(({ results }) => this.provinsis = results);
}

ОБНОВЛЕНИЕ: Если вы хотите работать с классами TypeScript, вам необходимо импортировать класс Response из @angular/http:

import { Http, Response } from '@angular/http';

Этот класс устарел.Вы можете проверить новое использование в этом вопросе здесь

...