Angular4 ng2-charts TypeError: Cannot read property 'length' of undefined
Angular4 ng2-charts TypeError: Cannot read property 'length' of undefined
我正在尝试使用从程序输出中收集的数据创建条形图。我正在使用一个变量来延迟 canvas 加载,我最初认为这是一个时间问题所以我使用了一个辅助函数来加载它但是不管我得到 core.js:4352 ERROR类型错误:无法在 ng2-charts.js:520.
处读取未定义的 属性 'length'
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>
我问了一个更有经验的朋友,但他帮不了我,虽然这个问题已经在这里被问过很多次了,但我尝试了所有我能在其他答案中找到的方法,但对我来说没有任何效果,如果有人可以帮助我。
编辑:
screenshot of error in browser
您似乎正在将数据数组传递给 datasets
字段,这不起作用,您需要传递包含数据数组的数据集对象数组。
基本数据集对象:
{
label: '# of Points',
data: [7, 11, 5, 8, 3, 7],
}
我正在尝试使用从程序输出中收集的数据创建条形图。我正在使用一个变量来延迟 canvas 加载,我最初认为这是一个时间问题所以我使用了一个辅助函数来加载它但是不管我得到 core.js:4352 ERROR类型错误:无法在 ng2-charts.js:520.
处读取未定义的 属性 'length'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>
我问了一个更有经验的朋友,但他帮不了我,虽然这个问题已经在这里被问过很多次了,但我尝试了所有我能在其他答案中找到的方法,但对我来说没有任何效果,如果有人可以帮助我。
编辑: screenshot of error in browser
您似乎正在将数据数组传递给 datasets
字段,这不起作用,您需要传递包含数据数组的数据集对象数组。
基本数据集对象:
{
label: '# of Points',
data: [7, 11, 5, 8, 3, 7],
}