【问题标题】:Empty response in Angular 4 from java backend来自java后端的Angular 4中的空响应
【发布时间】:2018-09-01 09:54:52
【问题描述】:

我是 Angular 新手,但遇到了问题。我想从我的 Spring Boot 后端获取数据到我的图表中。我从我的 Angular 应用程序发送了一个 GET 请求,尽管在控制台中看到它不是空的,但我收到了空响应。你能帮帮我吗?

我的角度服务

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]);
}

【问题讨论】:

  • 您使用HttpHttpClient
  • getChartData 是异步的。您正在尝试在订阅中设置之前读取该值。
  • 我正在使用 HttpClient

标签: angular spring-boot httprequest httpresponse angular4-httpclient


【解决方案1】:

您应该在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]);
  }

});

另外,我认为你在这里做的事情有问题。数据是否应该是一个对象数组,每个对象包含三个键,datepredictioncurrency

如果是这样,我认为您可以将逻辑简化为:

this.databaseService.getChartData().subscribe(d => {

  this.data = d.map(datum => { date: datum.date, prediction: datum.prediction, currency: datum.currency })

});

【讨论】:

    【解决方案2】:

    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]);
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2017-01-12
      相关资源
      最近更新 更多