0
我試圖用Chartist與來自Node.js API的數據構建圖表。在憲章的文檔有這樣的異步數據的例子:從Angular 2中的Chartist獲取數據
class AsyncChartComponent {
data: Promise<Chartist.IChartistData>;
type: Promise<ChartType>;
constructor() {
// simulate slow API call
this.data = new Promise(function(resolve: any): void {
setTimeout(function(): void {
resolve(data['Pie']);
}, 5000);
});
this.type = new Promise(function(resolve: any): void {
setTimeout(function(): void {
resolve('Pie');
}, 5000);
});
}
}
但我使用Observable
從API得到我的數據,我不能夠處理Promise
和Observable
... 我嘗試resolve
我的Promise
與從我的API調用的數據,但沒有返回期望Observable
。我不知道我怎麼也得處理這個:■ 這裏是我的角2部分:
export class RatesComponent implements OnInit {
@Output() changed = new EventEmitter<IRate>();
rates: IRate[] = [];
selectedRate: IRate;
errorMessage: string;
chart: Chart;
chartData: Promise<Chartist.IChartistData>;
type = 'Line';
constructor(private dataService: DataService) { }
ngOnInit() {
this.dataService.getRates()
.subscribe(
(data: IRate[]) => {
this.rates = data;
},
(error) => this.errorMessage = <any>error
);
this.chartData = new Promise((resolve: any): void => {
resolve(this.dataService.getChartData());
});
this.dataService.getChartData()
.subscribe(
(data: Chartist.IChartistData) => {
return data;
// console.log(this.chartData);
},
(error) => this.errorMessage = <any>error
);
this.chart = {
type: 'Line',
data: JSONdata['Line2']
};
}
select(rate: IRate) {
this.selectedRate = rate;
this.changed.emit(rate);
}
}
也許,我應該使用Promise
打電話給我的API,而不是Observable
,但我看不出它如何將解決我的問題......
任何幫助:)
這似乎在這兩個情況下工作,但我得到這個錯誤: ''例外:data.normalized.series [seriesIndex] .forEach不是function'' –
我不認爲這是連接到這個問題,你可能想檢查你的數據。它看起來像你的系列的一些元素不是一個數組,因此不能使用forEach函數。 –
爲什麼當我用相同的方式創建一個重載函數時,我得到了一個空的''Promise''? ''reloadChart(){ this.chartData = this.dataService.getChartData()。toPromise(); }'' –