我正在尝试将 Chart.js
实现到我的 Angular2
应用程序中。我正在使用ng2-charts指令也是如此。我按照示例中所示设置了所有内容,当我使用示例数据运行应用程序时,一切正常。当我尝试使用自己的数据时,问题就出现了。实际的问题是,我正在使用服务在 ngOnInit() 方法中加载数据,这样图表指令就会在我获得数据之前初始化(或者我猜是这样)。我收到这个不太具有描述性的错误:
"EXCEPTION: TypeError: t is undefined in [barChartOptions in trafficComponent@6:16]"
它并没有说太多:)问题不在 barChartOptions
中,因为我只替换 barChartLabels
和 barChartData
参数,其余参数如示例。我的参数也是正确有效的,它们也不是问题。
我想知道是否有一种方法可以使用类似 Promise 的方式重新加载(重新初始化)指令解决方案或利用生命周期 Hook 。
如果还有其他人遇到过同样的问题并准备分享他的解决方案,我会非常感到高兴:)
更新
我在控制台中记录了传递给 Chart
构造函数的 data
对象,作为 new Chart(ctx).Bar(data, options);
并且 labels
和 datasets.data
属性未定义,尽管我在从服务获取数据后又记录了它们一次他们是正确的。我认为某种数据绑定(bind)应该可以解决问题,但我不知道在这种情况下如何实现它。实际上有一个数据绑定(bind)(如 ng2-charts 中的示例所示),但它没有按我的预期工作。更改组件中的属性不会影响 Charts
指令的属性,并且它们仍然未定义。
更新2(2016-02-19)
更新到新发布的 Angular 版本 2.0.0-beta.7
后,一切都按预期运行。
最佳答案
在尝试创建折线图时,我在使用 Chart.js 时遇到了类似的问题。我的所有数据都显示为未定义。不确定您的问题是否与我的完全相同,但我至少可以向您指出我的解决方案的方向,即使用动态组件加载器。
Chart.js not showing in Angular2 if it doesn't exist on the main page
关于javascript - Angular2 + Chart.js 和 ng2-charts。数据绑定(bind)未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35436534/