0

我正在使用 angular2-highcharts 折线图来显示每周的访问者。我使用模拟数据在图表中创建点。我想要实现的是,当用户单击某个点时,他/她可以输入诸如“平安夜”之类的内容,然后在该点显示注释。

import { Component, OnInit } from '@angular/core';
import { Data } from '../data';
import { DataService } from '../data.service';
import { ChartOptions, Options } from 'highcharts';

@Component({
  selector: 'app-highcharts',
  templateUrl: './highcharts.component.html',
  styleUrls: ['./highcharts.component.css'],
  template: `
  <div class="container">
  <div class="chart">
  <chart [options]="options">
    <series (click)="click($event)">
    </series>
  </chart>
  <p>{{serieName}} is geselecteerd<p>
  </div>
  `,
})
export class HighchartsComponent implements OnInit {
  title = "Highcharts PoC"
  public options: Options;

  constructor(private dataService: DataService) {

    this.options = {
      title: { text: 'Visitors per week' },
      chart: { zoomType: 'x' }, 
      yAxis: {
        title: {
          text: "Visitors"
        }
      },
      xAxis: {
        title: {
          text: "Week number"
        }
      },
      plotOptions: {
        series: {
          cursor: 'pointer',
          point: {
            events: {
              click: function () {
                {
                    this.serieName = 'Appell';
                    return true
                }
                // alert('Christmas Eve');
                // return true;
              }
            }
          },
          pointStart: 1 // Week number
        }
      },
      series: [{
        name: '2017',
        data: dataService.getHighchartsData()
      }
      ]
    };
  }

  ngOnInit() {
  }
}
4

1 回答 1

0

我认为你在正确的轨道上。我会添加一个点击事件

// component.html
<chart>
    <series>
        <point (click)="onPointClick($event.context)"></point>
    </series>
</chart>

然后有一个表单或提交时向图表添加注释的东西。这是一个基本的 plnkr 演示(http://plnkr.co/edit/UYrRi3cCRyiv1IL4QDt4?p=preview)。在这里,我使用了 highcharts 注释模块(https://www.npmjs.com/package/highcharts-annotations)。您可以通过执行以编程方式添加注释

// component.ts
this.chart.annotations.add({
    title: {
        text: 'Christmas Eve'
    },
    xValue: 24,
    yValue: 12
});
于 2017-10-18T16:59:35.163 回答