Я использую angular2-chartjs для создания диаграммы. Ниже мой код
Модуль
import { ChartModule } from 'angular2-chartjs';
Вид
<div class="col-md-4">
Login Frequency Filter
<button (click)="handleClick($event)" type="button">Update Data</button>
</div>
<div class="col-md-8">
<nb-card>
<nb-card-header>Login Frequency</nb-card-header>
<nb-card-body>
<chart #loginChart id="chart" type="line" [data]="data" [options]="pieoptions"></chart>
</nb-card-body>
</nb-card>
</div>
и это мой компонент
data: any;
handleClick(event: Event) {
this.data['datasets'][0] = [99,88,88,77];
}
ngAfterViewInit() {
this.themeSubscription = this.theme.getJsTheme().subscribe(config => {
const colors: any = config.variables;
const echarts: any = config.variables.echarts;
const chartjs: any = config.variables.chartjs;
this.data = {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [ {
data: [18, 48, 77, 9, 100, 27, 40],
label: 'Events',
backgroundColor: NbColorHelper.hexToRgbA(colors.info, 0.3),
borderColor: colors.info,
},
],
};
});
}
Я думал, что если я обновлю данные в событии нажатия кнопки, тогда он должен автоматически обновлять данные на диаграмме, и я вижу, что данные обновляются, но диаграмма не перерисовывается.
handleClick(updated) {
if(updated)
{
// compute new data and store in this.datasets
this.data.datasets[0].data = [99,99,99,99,99,99,99];
// just trying refresh full variable
this.data = this.data.slice();
}
}
Спасибо
ngx-charts
или простоchart.js
- person Z. Bagley   schedule 04.08.2018this.data = JSON.parse(JSON.stringify(this.data));
для вашей текущей версии (вместоslice()
), и она должна обновиться. - person Z. Bagley   schedule 04.08.2018myChart.update();
(или делаете ее переменной области видимости компонентаmyChart: any;
иthis.myChart.update();
), поэтому всегда рекомендуется избегать устаревших библиотек из-за их поломки и/или отсутствия исправлений! Удачи в обучении :) - person Z. Bagley   schedule 04.08.2018