NG2 图表访问底图对象



我在我的 ionic 2 项目中使用 ng2-charts 来绘制折线图。我需要访问 (chartClick) 事件中的图表数据点集合。为此,我需要访问图表.js图表对象。有没有办法访问图表对象?

.HTML:

<base-chart class="chart"
        [data]="chartData"
        [labels]="chartLabels"
        [options]="lineChartOptions"
        [colours]="lineChartColours"
        [legend]="lineChartLegend"
        [chartType]="chartType"
        (chartClick)="chartClicked($event)"></base-chart>

打字稿:

chartClicked(e: any) {
    var chart = //reference to base chart object.
    var points = chart.getPointsAtEvent(e);
    alert(chart.datasets[0].points.indexOf(points[0]));
}

最终设法解决了这个问题。使用 app.getComponent() 方法获取对 ng2-chart 对象的引用,然后获取对内部图表.js图表对象的引用。

HTML:(添加了元素 ID 'mylinechart')

<base-chart id="mylinechart" class="chart"
    [data]="chartData"
    [labels]="chartLabels"
    [options]="lineChartOptions"
    [colours]="lineChartColours"
    [legend]="lineChartLegend"
    [chartType]="chartType"
    (chartClick)="chartClicked($event)"></base-chart>

打字稿:

constructor(private app: IonicApp) {
}
chartClicked(e: any) {
    var chartComponent = this.app.getComponent('mylinechart'); //ng2-chart object
    var chart = chartComponent.chart; //Internal chart.js chart object
    console.log(chart.datasets[0].points.indexOf(e.activePoints[0]));
}

更新 14-Feb-2017 与 @ViewChild

如果上述方法不起作用(由于角度更新),请尝试此操作。我没有测试这个确切的代码,因为我不再有确切的源代码。在我目前的项目中,我使用的是角度 2.4,所以我知道@ViewChild有效。

将 HTML 标记更改为:

<base-chart #mylinechart class="chart" etc..#mylinechart 通知)

键入脚本:

顶部:import { Component, ViewChild } from '@angular/core';

然后在组件类中:

@ViewChild('mylinechart')
private chartComponent: any;
constructor(private app: IonicApp) {
}
chartClicked(e: any) {
    var chart = this.chartComponent.chart; //Internal chart.js chart object
    console.log(chart.datasets[0].points.indexOf(e.activePoints[0]));
}

基本上,@ViewChild会为您提供对模板中标记为"#mylinechart"的组件的引用。使用 @ViewChild 装饰chartComponent变量可以通过该变量访问图表组件。请注意,@ViewChild返回的引用仅在"ngAfterViewInit"生命周期事件之后可用。由于我的用例是图表"单击"事件,因此我可以放心地假设视图在那时已初始化。

参考:角度@ViewChild

相关内容

  • 没有找到相关文章

最新更新