Я новичок в Angular, и у меня возникла проблема. Я хочу получить данные для моего графика из моего бэкэнда весенней загрузки. Я отправляю запрос GET из своего приложения Angular и получаю пустой ответ, несмотря на то, что в консоли вижу, что он не пустой. Не могли бы вы помочь мне?
Мой угловой сервис
getChartData(): Observable<Array<ChartDataParameters>> {
return this.http.get<Array<ChartDataParameters>> ('http://127.0.0.1:8080/currency/chartData');
}
и мой компонент, который использует этот метод
this.databaseService.getChartData().subscribe(d => {
this.data_origin = d;
});
for (let i = 0; i < this.data_origin.length; i++) {
this.data.push([this.data_origin[i].date, this.data_origin[i].prediction, this.data_origin[i].currency]);
}
getChartData асинхронный. Вы пытаетесь прочитать значение до того, как оно будет установлено в подписке.
я использую HttpClient





Вы должны использовать свои данные внутри Subscription. Кроме того, вам действительно не нужно создавать так много переменных для данных, которые вы пытаетесь использовать.
this.databaseService.getChartData().subscribe(d => {
this.data_origin = d;
});
for (let i = 0; i < this.data_origin.length; i++) {
this.data.push([this.data_origin[i].date, this.data_origin[i].prediction, this.data_origin[i].currency]);
}
должно быть
this.databaseService.getChartData().subscribe(d => {
for (let i = 0; i < d.length; i++) {
this.data.push([d[i].date, d[i].prediction, d[i].currency]);
}
});
Кроме того, я думаю, что что-то не так с тем, что вы здесь делаете. Предполагается, что данные представляют собой массив объектов, каждый из которых содержит три ключа: date, prediction и currency?
Если это так, я думаю, вы можете свести логику только к следующему:
this.databaseService.getChartData().subscribe(d => {
this.data = d.map(datum => { date: datum.date, prediction: datum.prediction, currency: datum.currency })
});
переместить loop внутрь subscribe
this.databaseService.getChartData().subscribe(d => {
for (let i = 0; i < d.length; i++) {
this.data.push([d[i].date, d[i].prediction, d[i].currency]);
}
});
Вы используете
HttpилиHttpClient?