在过滤值列表时,ANGULAR ASP.NET CORE CHARCET.JS错误重建



我有以下错误:typeError:无法读取未定义的属性'skip'。

我有一种在我的应用程序中构建图表的方法。发生这种情况

var ctx = document.getElementById("myChart");
var chartInstance = new Chart(ctx);
var myChart = new Chart(ctx, {
  type: 'line',
  data: {
    labels :this.equity,
    datasets: [{
      data: this.equity
    }]
  }
});

}

this.Equity是我使用服务器数据在客户端计算的值数组。这是我以后过滤的列表

一切都可以顺利进行,直到我开始过滤。该图是基于列表中的值构建的。我已经编码了一个过滤器,该过滤器用各种选项过滤列表。在每个过滤结束时,我再次调用上面的方法以重建图表。

现在这是奇怪的事情开始发生的地方。图表平稳地重建。我使用不同的选项过滤很多次,然后在某个时候我会得到这个错误!它在我按过滤器上的某个特定时刻不会发生,而只是发生。

我认为这是因为每次创建一个新的图表对象并为其提供新值时。值的变量与旧对象相同,并且会导致错误,因为在某个时候,Angular检查了旧对象,并且已经有一个不符合旧列表的值的新列表。

这对任何人都兴了吗?现在,有人在创建一个新图表对象时如何将旧图表对象删除以解决?谢谢!

使用 destroy() 方法。

...
if (myChart) myChart.destroy();
myChart = new Chart(ctx, {
         type: 'line',
         ...
...

确保myChart变量全球可访问

但是,一种更好的方法是使用 update() 方法更新图表,当您添加/更新图表中的数据时,而不是每次创建图表的新实例。