按钮点击事件中的数据绑定
Data bind in button click event
我正在使用 EJ2 Sync Fusion Charts 和 Angular 6 创建散点图。
.html 文件
<ejs-chart id="chart-container">
<e-series-collection>
<e-series [dataSource]="series1" typeof="Scatter"name="Male"></e-series>
<e-series [dataSource]="series2" typeof="Scatter" name="Female"></e-series>
</e-series-collection>
</ejs-chart>
<div>
<button ejs-button (click)="PlotChart()">Draw</button>
</div>
.ts 文件
import { Component, OnInit } from '@angular/core';
import { ChartData } from '../chartdata.service';
export class ScatterComponent implements OnInit {
public series1: Object;
public series2: Object;
public title: string;
constructor() { }
ngOnInit(): void {
// this.PlotChart(); //-> this works!!
}
public PlotChart(): void {
this.title = 'Height Vs Weight';
this.series1 = ChartData.prototype.getScatterData().series1;
this.series2 = ChartData.prototype.getScatterData().series2;
}
}
我正在使用外部 class(即 ChartData)将数据提取到我的图表系列中。
如果我在 ngOnInit 生命周期挂钩中调用 PlotChart() 方法,图表就会绘制,如果它是由单击按钮直接触发的,则不会绘制。
请注意,在这两种情况下,数据仍在按预期检索。
在我看来,除非在 ngOnInit() 内部调用图表系列,否则图表系列不受限制。
标题参数绑定有效,但图表系列绑定无效。
谁能告诉我解决方法?
我找到了如下解决方案。问题是将数据源设置为图表系列后图表没有刷新。下面是修改后的代码。
.html
<ejs-chart #chart id="chart-container">
<e-series-collection>
<e-series [dataSource]="series1" typeof="Scatter"name="Male"></e-series>
<e-series [dataSource]="series2" typeof="Scatter" name="Female"></e-series>
</e-series-collection>
</ejs-chart>
<div>
<button ejs-button (click)="PlotChart()">Draw</button>
</div>
更改:添加了#chart 以访问组件中的图表元素class
以下是组件class的变化。
import { ViewChild } from '@angular/core';
export class ScatterComponent {
@ViewChild('chart')
public chart: Chart;
public PlotChart(): void {
this.chart.series[0].dataSource = ChartData.prototype.getScatterData().series1;
this.chart.series[1].dataSource = ChartData.prototype.getScatterData().series2;
this.chart.refresh();
}
}
我们很高兴地宣布,我们已经在最新的 syncfusion Esstential Studio Volume 2 主版本中解决了问题 "chart data source not binding on refresh method"。
<div align='center'>
<ejs-chart style='display:block;'>
</ejs-chart>
</div>
请找到以下示例供您参考,
sample demo link
截图:
点击按钮之前
点击按钮后
我正在使用 EJ2 Sync Fusion Charts 和 Angular 6 创建散点图。
.html 文件
<ejs-chart id="chart-container">
<e-series-collection>
<e-series [dataSource]="series1" typeof="Scatter"name="Male"></e-series>
<e-series [dataSource]="series2" typeof="Scatter" name="Female"></e-series>
</e-series-collection>
</ejs-chart>
<div>
<button ejs-button (click)="PlotChart()">Draw</button>
</div>
.ts 文件
import { Component, OnInit } from '@angular/core';
import { ChartData } from '../chartdata.service';
export class ScatterComponent implements OnInit {
public series1: Object;
public series2: Object;
public title: string;
constructor() { }
ngOnInit(): void {
// this.PlotChart(); //-> this works!!
}
public PlotChart(): void {
this.title = 'Height Vs Weight';
this.series1 = ChartData.prototype.getScatterData().series1;
this.series2 = ChartData.prototype.getScatterData().series2;
}
}
我正在使用外部 class(即 ChartData)将数据提取到我的图表系列中。 如果我在 ngOnInit 生命周期挂钩中调用 PlotChart() 方法,图表就会绘制,如果它是由单击按钮直接触发的,则不会绘制。 请注意,在这两种情况下,数据仍在按预期检索。 在我看来,除非在 ngOnInit() 内部调用图表系列,否则图表系列不受限制。
标题参数绑定有效,但图表系列绑定无效。
谁能告诉我解决方法?
我找到了如下解决方案。问题是将数据源设置为图表系列后图表没有刷新。下面是修改后的代码。
.html
<ejs-chart #chart id="chart-container">
<e-series-collection>
<e-series [dataSource]="series1" typeof="Scatter"name="Male"></e-series>
<e-series [dataSource]="series2" typeof="Scatter" name="Female"></e-series>
</e-series-collection>
</ejs-chart>
<div>
<button ejs-button (click)="PlotChart()">Draw</button>
</div>
更改:添加了#chart 以访问组件中的图表元素class
以下是组件class的变化。
import { ViewChild } from '@angular/core';
export class ScatterComponent {
@ViewChild('chart')
public chart: Chart;
public PlotChart(): void {
this.chart.series[0].dataSource = ChartData.prototype.getScatterData().series1;
this.chart.series[1].dataSource = ChartData.prototype.getScatterData().series2;
this.chart.refresh();
}
}
我们很高兴地宣布,我们已经在最新的 syncfusion Esstential Studio Volume 2 主版本中解决了问题 "chart data source not binding on refresh method"。
<div align='center'>
<ejs-chart style='display:block;'>
</ejs-chart>
</div>
请找到以下示例供您参考, sample demo link
截图:
点击按钮之前
点击按钮后