获取请求失败angular2

时间:2016-10-27 16:28:44

标签: angular ionic2 get-request

我创建的网络服务应该发送带有1个参数的get请求, 我应该从API获得结果,

NetworkServices.ts

import { Injectable } from '@angular/core';
import {Http} from "@angular/http";

@Injectable()
export class NetworkServices{
  constructor(public http:Http){

  }
  getCurrency(obj){
    console.log("function fired!")
    let url = 'http://api.fixer.io/latest?base='+obj.selectedCurrency;
    console.log(obj);
    this.http.get(url)
      .toPromise()
      .then( (res) => {
          return res;
        }
      )
  }
}

结果应该是res,这是3周前的工作,我不知道角度如何改变heh ..

错误代码是:

[19:46:04]  transpile update started ...
[19:46:06]  typescript: D:/ionic/firstApp/src/services/network.ts, line: 25 
            Property 'toPromise' does not exist on type 'Observable<Response>'.

      L24:    return this.http.get(url).toPromise();
[19:46:06]  transpile update failed       L25:
}

[19:46:06]  watch ready

希望你们能解决这个问题:)

2 个答案:

答案 0 :(得分:1)

您的方法不会返回任何内容,然后回调除了将Promise<Response>转换为另一个Promise<Response>之外,不会执行任何操作。所以你的整个方法基本上是一个noop。

代码应该看起来像

getCurrency(obj){
    console.log("function fired!")
    let url = `http://api.fixer.io/latest?base=${obj.selectedCurrency}`;
    console.log(obj);
    return this.http.get(url).toPromise();
}

或者,如果您想返回包含响应的json主体而不是响应本身的承诺

getCurrency(obj){
    console.log("function fired!")
    let url = `http://api.fixer.io/latest?base=${obj.selectedCurrency}`;
    console.log(obj);
    return this.http.get(url).toPromise().then(res => res.json());
}

关于编译错误,您需要导入toPromise运算符:

import 'rxjs/add/operator/toPromise';

答案 1 :(得分:1)

您需要添加

import 'rxjs/add/operator/toPromise'