我有一个服务文件,我正在尝试将其设置为可观察量,其中包含我想订阅它的组件。但是它不起作用,我做错了什么?
服务: 跟踪器.服务.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.map
与Observable.map
运算符不同。
- Array.map 将返回一个 Array,请参阅此处。
- Observable.map 将返回一个 Observable。
您应该首先使用Observable.of(arr)
来提供可观察量。
Observable.of(allC)