我想在我的Angular 2项目中实现ng2图表,并且想知道如何创建自定义的onclick事件。意思是,我想覆盖购物车上的当前onclick事件来执行一些自定义功能(重定向到页面,模态显示等)。Chart.js&Angular 2 - ng2-charts自定义点击事件
有没有简单的方法来做到这一点?它是否构建在所有?
任何有识之士将不胜感激它
我想在我的Angular 2项目中实现ng2图表,并且想知道如何创建自定义的onclick事件。意思是,我想覆盖购物车上的当前onclick事件来执行一些自定义功能(重定向到页面,模态显示等)。Chart.js&Angular 2 - ng2-charts自定义点击事件
有没有简单的方法来做到这一点?它是否构建在所有?
任何有识之士将不胜感激它
尝试读取DOCS
他们使用的非常好,简单易懂的解释。
有-均内置2事件处理程序:
活动
chartClick
:当发生点击图表上的火灾,返回关于活性部位,并标记
chartHover
:火灾当mousemove(悬停)出现在图表上时,返回有关活动点和标签的信息
在代码中,它看起来像:
<base-chart class="chart"
[datasets]="lineChartData"
[labels]="lineChartLabels"
[options]="lineChartOptions"
[colors]="lineChartColours"
[legend]="lineChartLegend"
[chartType]="lineChartType"
(chartHover)="chartHovered($event)"
(chartClick)="chartClicked($event)"></base-chart>
</div>
是chartHovered
和chartClicked
是您的自定义功能,这可能有另一个名字,并进行自定义的东西如显示模式,重定向到URL等
public chartClicked(e: any): void {
console.log(e);
}
e.active[0]._model
和e.active[0]._view
包含有关您点击的图表部分的信息(即label
)。
我希望我的回答是正确的。之后我发现的唯一解决方案相比,搜索是:
public chartClicked(e:any):void {
if(e.active.length > 0){
var points = [];
var pointSelected = e.active[0]._chart.tooltip._model.caretY;
var legends = e.active[0]._chart.legend.legendItems;
for (var i = 0; i < e.active.length; ++i) {
points.push(e.active[i]._model.y);
}
let position = points.indexOf(pointSelected);
let label = legends[position].text
console.log("Point: "+label)
}}
我发现这个解决方案在https://github.com/valor-software/ng2-charts/issues/489
public chartClicked(e: any): void {
if (e.active.length > 0) {
const chart = e.active[0]._chart;
const activePoints = chart.getElementAtEvent(e.event);
if (activePoints.length > 0) {
// get the internal index of slice in pie chart
const clickedElementIndex = activePoints[0]._index;
const label = chart.data.labels[clickedElementIndex];
// get value by index
const value = chart.data.datasets[0].data[clickedElementIndex];
console.log(clickedElementIndex, label, value)
}
}
}
是的,我看到了,谢谢。从哪件作品中获取数据实际上是点击了什么?例如,如果你点击一个栏(或者一块饼),你怎么能从ng2传递的$ event中访问这些数据呢?我似乎无法通过它所传递的$事件的控制台来查找 – blubberbo
肯定的,在点击或悬停随机图表时,您有不同的'_index'-es。 'e.active [0] ._ index' –
谢谢。我可以看到e.active [0],但在那里找不到实际数据。意思是,我怎么能从那个事件告诉哪个实际的按钮被点击了? – blubberbo