我正在尝试使用从程序输出收集的数据创建一个条形图。我正在使用一个变量来延迟画布加载,我最初认为这是一个时间问题,所以我使用了一个辅助函数来加载它,但无论如何我得到core.js:4352 ERROR TypeError:无法读取属性'length'未定义在ng2-charts.js:520.
app.component.ts
public barChartOptions: any = {
scaleShowVerticalLines: false,
responsive: true
};
public barChartType: string = 'bar';
public barChartLegend: boolean = false;
public barChartData: number[];
public barChartLabels: number[];
public tempData: number[] = [];
public tempLabels: number[] = [];
public chartReady: boolean = false;
grafico() {
const url = this.root + 'grafico';
this.httpclient.get(url).subscribe((res) => {
for (let key in res) {
if (res[key].uid == -1) {
this.barChartLabels = this.tempLabels;
this.barChartData = this.tempData;
this.loadchart();
}
else {
this.tempData.push(res[key].data);
this.tempLabels.push(res[key].uid);
}
};
});
}
loadchart() {
this.chartReady = true;
}
app.component.html
<canvas
*ngIf="this.chartReady"
baseChart
style="height:230px"
[datasets]="this.barChartData"
[labels]="this.barChartLabels"
[options]="this.barChartOptions"
[legend]="this.barChartLegend"
[chartType]="this.barChartType" >
</canvas>
我问了一个更有经验的朋友,但他不能帮助我,虽然这个问题已经问了很多次了,我试了所有我能找到的其他答案,但没有为我工作,我真的很高兴如果有人能帮助我。
编辑:浏览器错误截图
似乎你正在传递一个数据数组到datasets
字段,这不起作用,你需要传递一个包含数据数组的数据集对象数组。
基本数据集对象:
{
label: '# of Points',
data: [7, 11, 5, 8, 3, 7],
}