2016-07-14 2 views
0

Я пытаюсь получить данные из инфляции Statbureau api-https://www.statbureau.org/en/inflation-api с помощью Angular 2. Я начинаю просто тестировать свой api и следить за тем, чтобы он выводил сообщение об успешном завершении в консоли. Похоже, что api, который я использую, является JSONP, из-за адреса JSON, который я использую http://www.statbureau.org/calculate-inflation-price-jsonp?jsoncallback=? На веб-сайте они предоставляют скрипт JS, который делает успешный вызов api с помощью jquery. Когда я пытаюсь сделать тот же вызов в угловых 2 я получаю следующие ошибки:Http получить запрос в Angular 2

TypeScript error: C:/Users/Rennie/projects/inflator/app/pages/home/home.ts(22,13): Error TS 
2322: Type 'Observable<any>' is not assignable to type 'HomePage'. 
    Property 'jsonp' is missing in type 'Observable<any>'. 
TypeScript error: C:/Users/Rennie/projects/inflator/app/pages/home/home.ts(22,13): Error TS 
2409: Return type of constructor signature must be assignable to the instance type of the c 

Вот мой код

import {Component} from '@angular/core'; 
import {NavController} from 'ionic-angular'; 
import {Jsonp, URLSearchParams } from '@angular/http'; 
import {Observable} from 'rxjs/Rx'; 
import 'rxjs/add/operator/map'; 
@Component({ 
    templateUrl: 'build/pages/home/home.html' 
}) 
export class HomePage { 


    constructor(private jsonp: Jsonp) { 

    this.jsonp=jsonp; 
     let cpiUrl = "https://www.statbureau.org/calculate-inflation-price-jsonp?jsoncallback" 
     let params = new URLSearchParams(); 
     params.set('country', 'united-states'); 
     params.set('amount', '102'); 
     params.set('start', '1968/1/1'); 
     params.set('finish', '2016/1/1'); 
     // TODO: Add error handling 
     return this.jsonp 
       .get(cpiUrl, { search: params }).map(function(response){ return response.json(); }) 

    } 


} 

Моего код отличается от вызова в jsfiddle, потому что я жёстко параметры api, чтобы быстро увидеть результат.

ответ

1

1) Конструктор обычно (всегда?) Не имеет оператора возврата. Удаление возвращение Постулаты должен обрабатывать type 'Observable<any>' is not assignable to type 'HomePage'.

2) Там, кажется, не быть методом get на Jsonp класса в Angular 2 чеке docs.

3) Наблюдаемая последовательность/конвейер не будут выполняться до подписки (они ленивы), поэтому даже если этот код скомпилировал, запрос не будет выполнен.

4) Я думаю, вы должны взглянуть на this похожий вопрос.

Удачи.

+0

Я отредактировал это из-за новой ошибки, посмотрите http://stackoverflow.com/questions/38401935/jsonp-request-error-angular-2 – RSB

Смежные вопросы