当我将数组推入ngx-barchart时,推函数会向图表添加一个空对象。我遍历api服务并获取了此信息:
然后我在barchart.component.ts中调用该服务
single: any = [
{
"name": [],
"value": []
}
];
要推送的功能:
getChartData() {
this.storageService.barChart.subscribe(barChart=> {if(barChart)
barChart.forEach((i) => {
// this.single[0].push({name: (i.skill_name), value: (i.score)})
this.single.push({name: (i.skill_name), value: (i.score)});
});
this.single=[...this.single];
console.log(this.single)
});
};
我尝试添加:
this.single[0].push({name: (i.skill_name), value: (i.score)})
但是我收到错误TypeError:_this.single [0] .push不是函数
答案 0 :(得分:0)
我希望不会将空对象传递给我的图表数据。
那么一开始就不要创建一个,那是您数据中的空白。
代替:
single: any = [
{
"name": [],
"value": []
}
];
正义:
single: any = [];
旁注1:除非您想继续向push
添加越来越多的数据,否则我将不会在这里使用this.single.
,如果您要替换 {{ 1}}每次使用this.single
:
map
侧面注2:由于这是TypeScript,因此您可能会受益于此数据的类型:
this.single = (barChart || []).map(({skill: {score: value, name}}) => ({name, value}));
// (And no `this.single = [...this.single];` afterward, it's not needed)
然后
interface ChartDataEntry {
name: string;
value: number; // If it's a number
}
single: ChartDataEntry[] = [];
行没有改变,TypeScript可以推断this.single = ...
返回的条目的类型,并可以看到它们对该接口有效。
或者,如果愿意,也可以只声明map
内联的条目类型,而不用声明接口:
single
但是具有声明的类型通常很有用,因为您可能会发现要在同一代码的其他地方使用它。
答案 1 :(得分:0)
<!-- Nothing Here -->
是对象而不是数组
您可以尝试:
this.single[0]