首页 > 解决方案 > Apex 蜡烛图未更新

问题描述

我正在使用角度顶点图表来创建蜡烛图。

我的 html 看起来像这样:

<apx-chart
  [series]="chartOptions.series"
  [chart]="chartOptions.chart"
  [xaxis]="chartOptions.xaxis"
  [title]="chartOptions.title"
></apx-chart>

我用示例数据初始化图表,这样我就可以看到它工作了。当我尝试从我的 websocket 动态更新图表时,没有任何反应(示例数据仍然存在)component.ts:

this.chartOptions = {
  series: [{
      name: "My-series",
      data: this.getSampleData()
  }],
  chart: {
    height: 350,
    type: "candlestick"
  },
  title: { text: "BTC SMA Chart"},
  xaxis: { type: 'datetime' }
};

this.connection.on("candlesReceived", (candleJson) => {
  var candle = JSON.parse(candleJson);
  console.log("open: " + candle.open + " high: "
    + candle.high + " low:" + candle.low + " close:" + candle.close);

    this.data.push({ x:Date.parse(candle.timeStamp), y: [candle.open, candle.high, candle.low, candle.close]})
    this.chartOptions.series = [{ data: this.data }]
})

根据文档,您更新所需要做的就是重新分配系列。然而,这是行不通的。

如何动态更新我的图表以使其实时运行?

标签: javascriptc#angulartypescriptapexcharts

解决方案


很难说为什么它不适用于您提供的有限代码,但我创建了您提供的链接示例的分支,我通过单击按钮将其附加到图表系列。

代码:

let data = this.chartOptions.series[0].data;
data.push({
  x: new Date(1538894800000),
  y: [6669.81, 6660.5, 6663.04, 6663.33]
});
this.chartOptions.series = [
  {
    data: data
  }
];

另外Date.parse(candle.timeStamp)返回一个 int 值,而不是我认为您想使用日期,因此您应该执行以下操作:

new Date(Date.parse(candle.timeStamp));

如果您在 websocket 事件上执行此操作,只需确保您访问的是正确的 chartOptions 实例,它应该可以正常工作。


推荐阅读