我创建的网络服务应该发送带有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
希望你们能解决这个问题:)
答案 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'