Когда я пытался воспроизвести ваш код, у меня возникла та же проблема, что легенды столкнулись с ними ... причина была в формате pieChartData: любой объект и данные [2193,3635,8417,0]
, которые в него подавались!!
Вы определили pieChartData
как массив с одним объектом со свойством данных, состоящим из массива.
pieChartData:any = [ { data: [] } ];
В то время как значения устанавливались как числовой массив [2193, 3635,8417,0], что означает:
pieChartData:any = [];
Чтобы воспроизвести задержку, вызванную вашим HTTP-вызовом ... я использовал setTimeout и получил форму, работающую как задумано ...
релевантный TS :
import { Component } from '@angular/core';
import { ChartType, ChartOptions } from 'chart.js';
import { Label } from 'ng2-charts';
import * as pluginDataLabels from 'chartjs-plugin-datalabels';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
name = 'Angular';
someData: any[] = [];
public pieChartOptions: ChartOptions = {
responsive: true,
legend: {
position: 'top',
},
plugins: {
datalabels: {
formatter: (value, ctx) => {
const label = ctx.chart.data.labels[ctx.dataIndex];
return label;
},
},
}
};
public pieChartLabels: Label[] = ['PENDING', 'SUCCESS', 'FAIL', 'CREATED'];
public pieChartType: ChartType = 'pie';
public pieChartLegend = true;
public pieChartPlugins = [pluginDataLabels];
public pieChartColors = [
{
backgroundColor: ['rgba(30, 169, 224, 0.8)',
'rgba(255,165,0,0.9)',
'rgba(139, 136, 136, 0.9)',
'rgba(255, 161, 181, 0.9)',
]
},
];
//public pieChartData: number[] = [2193,3635,8417,0];
public pieChartData: number[] = [];
constructor() { }
ngOnInit() {
setTimeout(() => {
this.someData = [300, 500, 100];
this.pieChartData = this.someData;
}, 5000);
}
}
релевантный HTML :
<hello name="{{ name }}"></hello>
<div *ngIf='this.someData.length <=0'>
Please wait while the latest data is fetched
</div>
<div *ngIf='this.someData.length >0'>
We got data: {{this.someData.length}}
<div class="chart">
<canvas baseChart
[data]="pieChartData"
[labels]="pieChartLabels"
[chartType]="pieChartType"
[options]="pieChartOptions"
[plugins]="pieChartPlugins"
[colors]="pieChartColors"
[legend]="pieChartLegend">
</canvas>
</div>
</div>
рабочий стек-блиц доступен здесь