Javascript 如何使用chart.js仅更改图表中的特定选项?
我有一个Javascript 如何使用chart.js仅更改图表中的特定选项?,javascript,angular,chart.js,Javascript,Angular,Chart.js,我有一个输入,类型为数字,它在X轴上提供了最大刻度 我已订阅该输入的valueChange,我发现更新勾选选项的max值的唯一方法是: updatedMaxTickX(chart: any, newMax: number): void { chart.options = { scales: { xAxes: [ { ticks: {
输入
,类型为数字
,它在X轴
上提供了最大刻度
我已订阅该输入的valueChange
,我发现更新勾选选项的max
值的唯一方法是:
updatedMaxTickX(chart: any, newMax: number): void {
chart.options = {
scales: {
xAxes: [
{
ticks: {
max: newMax
}
}
]
}
};
}
然后:
this.detailsForm.get("max").valueChanges.subscribe(v => {
this.updatedMaxTickX(this.canvas, v);
this.canvas.update()
});
这是可行的,当输入改变时,最大刻度会被更新,但同时所有其他选项都会被重置
所以基本上,我认为这会覆盖我的选项,并将其他所有选项置为默认
如何仅更改ticks.max,同时保留控制器中定义的所有其他内容
我试过了
this.detailsForm.get("max").valueChanges.subscribe(v => {
this.canvas.options.scales.xAxes.ticks.max = v;
this.canvas.update()
});
但这不起作用,并且会给我错误。xAxes
是一个数组,应该可以:
myChart.options.scales.xAxes[0].ticks.max = v;
错误是什么?@trichetriche TypeError:无法设置未定义的属性“max”。这意味着您在第一次声明选项时没有设置max
属性。这样做,您提供的最后一段代码应该可以工作。@trichetriche但如果我只是注释掉这一行,并在同一订阅中使用我上面编写的函数,它就可以工作了,它只会覆盖所有其他代码settings@trichetrichemax在我的xAxes tick选项中被设置为0,所以它被定义了,我甚至尝试了其他值,同样的结果