代码之家  ›  专栏  ›  技术社区  ›  Hoàng Nguyễn

角度海图将数据从api推送到海图选项

  •  0
  • Hoàng Nguyễn  · 技术社区  · 7 年前

    我得到了以下数据( https://api.coindesk.com/v1/bpi/historical/close.json ):

    {
       bpi: {
       2017-12-15: 17601.9438,
       2017-12-16: 19343.04,
       2017-12-17: 19086.6438,
       2017-12-18: 18960.5225,
       ...
    }
    

    我使用此库可视化折线图: https://github.com/cebor/angular-highcharts

    我试图将上述数据推送到highcharts选项中,但没有任何结果显示没有任何错误。因此,我怀疑我的推法需要有人指点。

    代码如下:

    export class ChartComponent implements OnInit {
    
      stockChart: StockChart;
      historyData = [];
    
      constructor(private apiService: ApiService) {
        this.apiService.getBtcData()
        .subscribe((data) => {
          this.historyData = Object.values(data.bpi);
          console.log(this.historyData);
        });
       }
    
      ngOnInit() {
        this.stockChart = new StockChart({
           series: [{
              tooltip: {
                valueDecimals: 2
              },
              marker: {
                enabled: false
              },
              name: 'BTC/USD',
              data: this.historyData
            }]
        }) 
      }
    }
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   LLai    7 年前

    historyData 在初始化Ngonit中的图表数据时未定义,因此图表没有数据。您应该在subscribe中初始化图表(在定义historyData之后)

    this.apiService.getBtcData()
        .subscribe((data) => {
            this.historyData = Object.values(data.bpi);
    
            this.stockChart = new StockChart(...);
        });
    

    或者通过highcharts设置数据 setData 方法并重新绘制图表

    this.apiService.getBtcData()
        .subscribe((data) => {
            this.historyData = Object.values(data.bpi);
            // assign chart data and redraw (2nd parameter of setData)
            this.stockChart.ref.series[0].setData(this.historyData, true);
        });