удалось решить это в конечном счете. Использовал метод app.getComponent(), чтобы получить ссылку на объект ng2-chart, а затем на внутренний объект chart.js.
HTML: (добавлен элемент идентификатор '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' в шаблоне. Украшение переменной chartComponent
с помощью @ViewChild
позволяет получить доступ к компоненту диаграммы через эту переменную. Обратите внимание, что ссылки, возвращаемые @ViewChild
, доступны только после события события «ngAfterViewInit». Поскольку мой вариант использования - это событие щелчка на карте, я могу с уверенностью предположить, что к этому моменту представление было инициализировано.
Код: Angular @ViewChild
Это не сработало для меня. getComponent кажется устаревшим. Я пробовал это с ViewChild, но график не является допустимым свойством chartcomponent – Wandang
Я опубликовал обновление для ответа с @ViewChild. Посмотрите, работает ли для вас новый подход и ответьте здесь. Также проверьте, нужно ли использовать событие «ngAfterViewInit». – ravinsp
Я так и делал это раньше. Но это не сработало. Но я нашел другой способ архивировать желаемый результат: http://stackoverflow.com/a/42212587/1093816 (В основном viewchilding BaseChartDirectory и использование его метода ngOnChange для обновления диаграммы. Спасибо за ваши отзывы! – Wandang