javascript - Angular2 + Chart.js 和 ng2-charts。数据绑定(bind)未按预期工作

标签 javascript charts angular chart.js

我正在尝试将 Chart.js 实现到我的 Angular2 应用程序中。我正在使用ng2-charts指令也是如此。我按照示例中所示设置了所有内容,当我使用示例数据运行应用程序时,一切正常。当我尝试使用自己的数据时,问题就出现了。实际的问题是,我正在使用服务在 ngOnInit() 方法中加载数据,这样图表指令就会在我获得数据之前初始化(或者我猜是这样)。我收到这个不太具有描述性的错误:

"EXCEPTION: TypeError: t is undefined in [barChartOptions in trafficComponent@6:16]"

它并没有说太多:)问题不在 barChartOptions 中,因为我只替换 barChartLabelsbarChartData参数,其余参数如示例。我的参数也是正确有效的,它们也不是问题。
我想知道是否有一种方法可以使用类似 Promise 的方式重新加载(重新初始化)指令解决方案或利用生命周期 Hook 。
如果还有其他人遇到过同样的问题并准备分享他的解决方案,我会非常感到高兴:)

更新

我在控制台中记录了传递给 Chart 构造函数的 data 对象,作为 new Chart(ctx).Bar(data, options); 并且 labelsdatasets.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/

相关文章:

android - 在android中用指针绘制图表

angular - Id token 和访问 token 以及用户信息

angular - 当另一个 Accordion 打开时关闭另一个 Accordion

swift - 如何使用 Swift Charts 创建每天 1 个单位而不是每个数据点 1 个单位的 x 轴?

javascript - Vue-路由器错误: TypeError: Cannot read property 'matched' of undefined

javascript - 小部件 CSS 被外部页面 CSS 干扰

javascript - 引用错误 : KeyframeEffect is not defined in paper component

javascript - Chart.js - 无法读取 null 的属性 'getContext'

javascript - 当输入中的值发生变化时填充输入( Angular )

javascript - 缓存其参数的返回值的函数