Ionic 3 Angular Chart.js更新数据

Ionic 3 Angular Chart.js更新数据,angular,chart.js,ionic3,Angular,Chart.js,Ionic3,我正在将Chart.js与我的Ionic 3 Angular应用程序一起使用。一切正常,除了我无法刷新实际更改的条的数据 代码如下: ionViewDidLoad(){ this.barChart = new Chart(this.barCanvas.nativeElement, { type: 'bar', data: { labels: ["Safeway", "CVS", "Walgreens", "Bon Appe

我正在将Chart.js与我的Ionic 3 Angular应用程序一起使用。一切正常,除了我无法刷新实际更改的条的数据

代码如下:

ionViewDidLoad(){
    this.barChart = new Chart(this.barCanvas.nativeElement, 
    {
        type: 'bar',
        data: {
            labels: ["Safeway", "CVS", "Walgreens", "Bon Appetit"],
            datasets: [{
                label: "Pepsi",
                backgroundColor: "#002F6F",
                data: this.pepsiData
            }, {
                label: "Coke",
                backgroundColor: "#F50000",
                data: this.cockData
            }, {
                label: "V8",
                backgroundColor: "orange",
                data: [83,19,32,34]
            }]
        },
        options: {
            title: {
                display: true,
                text: 'Brands'
            }
        }
    });
}
一个单独的按钮将pepsiData的数据更新为:

this.pepsiData[3] = 80;

但这不会刷新特定的栏。我现在的丑陋解决方案是重新绘制整个图表,这看起来是一个糟糕的解决方案。

如chart.js文档中所述,如果希望在创建图表后更新图表中的数据,则需要调用
chart.update()

添加数据然后更新图表的示例:

function addData(chart, label, data) {
    chart.data.labels.push(label);
    chart.data.datasets.forEach((dataset) => {
        dataset.data.push(data);
    });
    chart.update();
}
完成更新函数中的数据更改后,只需添加更新行代码,如下所示:

this.pepsiData[3] = 80;
myChart.update();

这是init函数,对吗?刷新逻辑在哪里?您在哪里触发刷新?我怀疑您需要订阅某些内容,并使用事件处理程序来侦听图表并根据更改的数据重新绘制图表。如果它来自表单,请确保使用ReactiveFormsModule。您可以订阅更改事件并使用它重新绘制。在没有看到整个解决方案的情况下,当数据发生变化时,很难给出明确的答案。在更改数据后,您需要调用
this.barChart.update()
谢谢@duanx这正是我所需要的!