Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用chart.js仅更改图表中的特定选项?_Javascript_Angular_Chart.js - Fatal编程技术网

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,所以它被定义了,我甚至尝试了其他值,同样的结果