Highchart更新图表问题

时间:2020-07-08 11:59:23

标签: angular highcharts

我正在根据某些情况从API提取系列数据,如果在一种情况下数据为空,则无法刷新图表Chart,但它仍显示先前的值,而没有获得正确的方法来刷新图表

ngAfterViewInit() {
this.sink.add(this._store.pipe(select(coreSelector)).
  subscribe((data: ICore) => {
    if (data && data.hasOwnProperty(this.selectedZone)) {
      this.chartComponent.chartInstance.xAxis[0].
        setCategories(data[this.selectedZone].categories, false);
      this.updateSeries(data);
    } else {
      // this.chartComponent.chartInstance.xAxis[0].setCategories([], false);
      // this.chartComponent.chartInstance.series.forEach((chartSeries, index) => {
      //     this.chartComponent.chartInstance.series[index].setData([], false);
      // });
    }
  }));
}

updateSeries(data) {
    data[this.selectedZone].seriesData.forEach((series) => {
     this.chartComponent.chartInstance.series.forEach((chartSeries, index) => {
    if (seriesKeyMapping[series.seriesName] === chartSeries.name) {
      this.chartComponent.chartInstance.series[index].setData(series.data, false);
    }
  });
});
this.chartComponent.chartInstance.redraw();
}

我尝试将setData设置为空数组,但这也无法按预期工作。 最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您将Highcharts与Angular一起使用,建议使用官方的highcharts-angular包装器。使用包装程序,您不必创建自己的方法即可处理更新。

在这里您可以找到一个简单的演示,它将向您展示使用highcharts-angular更新图表的最佳方法:
https://stackblitz.com/edit/highcharts-angular-optimal-way-to-update-gd7vv2

文档参考:
https://github.com/highcharts/highcharts-angular