0

我有一个包含两个系列的图表。我想通过单击一个按钮来切换该系列的数据标签。

changeDatalabel(): void { 

if (!this.dataLabelEnabled) { // global Var
  this.chart.ref.series[0].update({ dataLabels: { enabled: true } }); // Compile error
  this.dataLabelEnabled = true; // for toggling
} else {
  this.chart.ref.series[0].update({ dataLabels: { enabled: false } }); // Compile error
  this.dataLabelEnabled = false; // for toggling
}

问题是当我插入“dataLabels:{enable:true}”并且他跳出方法“changeDatalabel()”时,updateMethod出现编译错误。

当我使用 updateMethod 获得两个按钮时,编译错误再次出现,但它可以工作。

createLabel(): void {
this.chart.ref.series[0].update({ dataLabels: { enabled: true } });



deleteLabel(): void {
this.chart.ref.series[0].update({ dataLabels: { enabled: false } });
4

1 回答 1

0

这是正确类型的问题。您可以在@types/highcharts中看到第series.update一个参数是IndividualSeriesOptions没有DataLabels道具的类型。

您可以将选项类型显式设置为以下LineChart类型:

import { LineChart } from 'highcharts';
...

toggleLabel(): void {
  const options: LineChart = {
    dataLabels: {
      enabled: !this.dataLabelEnabled
    }
  }

  this.chart.ref.series[0].update(options);
  this.dataLabelEnabled = !this.dataLabelEnabled;
}

示例:https ://stackblitz.com/edit/angular-bmhomi?file=app/highchart-demo/highchart-demo.component.ts

于 2018-03-13T11:58:56.753 回答