【问题标题】:Angular 7 - Dynamic HighChart updateAngular 7 - 动态 HighChart 更新
【发布时间】:2019-11-27 18:43:31
【问题描述】:

在我的角度解决方案中,我需要使用 Highcharts 显示一些图表。在我的component.ts 中,我有以下代码:

import * as Highcharts from "highcharts";

highcharts = Highcharts;
  chartOptions = {
    chart: {
       type: "spline",
       title: "Reach/TRP"
    },
    xAxis: {
      title: {
        text: this.xAxis.name
      }
    },
    yAxis: {
       title: {
          text: "Reach"
       }
    },
    series: [
       {
          name: this.xAxis.name,
          data: this.xAxis.data
       }
    ]
 };

然后在我的.html 我这样使用它:

<highcharts-chart
  [Highcharts] = "highcharts"
  [options] = "chartOptions"
  style="width: 100%; height: 400px; display: block;">
</highcharts-chart>

在我的html 上,我还有以下下拉菜单:

<p-dropdown [showTransitionOptions]="'0ms'" [hideTransitionOptions]="'0ms'"
  dropdownIcon="fa fa-angle-down" class= "nextgen-dropdown" 
  [options]="optionsLookup"
  [(ngModel)]="selectedOption" (onChange)= "onOptionChange($event)">
</p-dropdown>

其中有"OnOptionChange" 方法应该像这样更新Chart

 onOptionChange() {
    this.xAxis.name = this.selectedOption;
    this.xAxis.data = [100, 100, 200, 200, 350, 250];
    this.chartOptions.series[0] = this.xAxis;
  }

这里的问题是方法被正确调用了,但是图表根本没有更新。

我在这里缺少什么?

【问题讨论】:

  • 检测策略是什么意思?

标签: angular typescript highcharts angular-highcharts


【解决方案1】:

你应该传递新的选项参考:

onOptionChange() {
  this.xAxis.name = this.selectedOption;
  this.xAxis.data = [100, 100, 200, 200, 350, 250];
  this.chartOptions.series[0] = this.xAxis;

  this.chartOptions = { ...this.chartOptions }; // this should do the trick
}

【讨论】:

  • 难以置信,这结果太棒了!!!优秀的答案真的很方便。我知道 {... } 语句会将新信息发送到我的对象,对吗?
  • 是的,它创建了一个与当前 chartOptions 对象具有相同属性的新对象
  • 太棒了!再次感谢您的大力帮助!
猜你喜欢
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
相关资源
最近更新 更多