Angular 2/4 试图通过调用 javascript 数组对象来获取 Observable - 要订阅



我有一个服务文件,我正在尝试将其设置为可观察量,其中包含我想订阅它的组件。但是它不起作用,我做错了什么?

服务: 跟踪器.服务.ts

getAllCoins(): (Observable<string>) {   //<Response> {
return allC
.map(res => JSON.stringify(res))
//.do(data => console.log('coins ' + JSON.stringify(data)))
//.catch(this.handleError)
}

我的函数,其中这个可观察的不喜欢
以前我使用了一个真实的URL,我使用了http.get FYI,并且工作(虽然编码不同(

我的 JSON 数据:

const allC =
[{
"BTC": {
"USD": 3349.1
},
"ETH": {
"USD": 296.3
},
"LTC": {
"USD": 47.56
},
"EOS": {
"USD": 1.83
},
"DASH": {
"USD": 195.83
}
}]

接下来,我设置组件并尝试订阅它。

组件文件

coinsList = [];
constructor(
private coinService: TrackerService
) {
this.coinService.getAllCoins()
.subscribe(
(data) => {
for (let key in data) {
this.coinsList.push({ coinName: key, price: data[key].USD});
}
},
(error) => console.log('error :' + error)
);
}

以前我使用了一个真实的URL,我使用了http.get FYI,并且工作(尽管编码不同(

这是因为http.get将返回一个可观察量。


Array.mapObservable.map运算符不同。

  • Array.map 将返回一个 Array,请参阅此处
  • Observable.map 将返回一个 Observable。

您应该首先使用Observable.of(arr)来提供可观察量。

Observable.of(allC)

最新更新