【问题标题】:Angular2 + Chart.js and ng2-charts. Data binding not working as expectedAngular2 + Chart.js 和 ng2-charts。数据绑定未按预期工作
【发布时间】:2016-05-27 23:12:11
【问题描述】:

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

“异常:TypeError: t 在 [barChartOptions in trafficComponent@6:16] 中未定义”

其实没什么好说的 :) 问题不在于barChartOptions,因为我只替换了barChartLabelsbarChartData 参数,其余参数与示例相同。我的参数也是正确和有效的,它们也不是问题。
我想知道是否有办法使用类似Promise 的解决方案重新加载(重新初始化)指令或利用生命周期挂钩。
如果有其他人遇到过同样的问题并准备分享他的解决方案,我会非常高兴 :)

更新

我在控制台中记录了 data 对象作为 new Chart(ctx).Bar(data, options); 传递给 Chart 构造函数,而 labelsdatasets.data 属性是 未定义 虽然我又记录了一次在我从服务中获取数据之后,它们是正确的。我认为某种数据绑定应该可以解决问题,但在这种情况下我不知道如何实现它。实际上有一个数据绑定(如ng2-charts 中的示例所示),但它不像我预期的那样工作。在我的组件中更改属性不会影响 Charts 指令的属性,它们仍然未定义

更新 2 (2016-02-19)

更新到新发布的 Angular 版本 2.0.0-beta.7 后,一切都按预期工作。

【问题讨论】:

  • 我试图将图表 js 添加到我的应用程序中,错误是 p-chart is not known

标签: javascript charts angular chart.js


【解决方案1】:

在尝试创建折线图时,我在使用 chart.js 时遇到了类似的问题。我所有的数据都显示为未定义。不确定您的问题是否与我的完全相同,但我至少可以为您指明使用动态组件加载器的解决方案的方向。

Chart.js not showing in Angular2 if it doesn't exist on the main page

【讨论】:

  • 是的,感谢您分享您的解决方案。除了使用DynamicComponentLoader 加载包含画布元素(在您的情况下为CanvasComponent)的组件不会调用它的ngOnInit 钩子之外,它似乎可以工作,我需要它来调用为我提供数据的服务。
  • Interpolation 和 Angular2 的核心指令(如 *ngIf)似乎也不适用于加载了 DynamicComponentLoader 的组件。我不知道这是一个错误还是文档中缺少的特定内容。
【解决方案2】:

更新到 Angular 2.0.0-beta.7 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2019-04-23
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2010-09-19
    • 2012-08-17
    相关资源
    最近更新 更多