如何在Angular2中实现chart.js

时间:2016-08-22 16:18:08

标签: angular chart.js

我正在使用Angular2-rc4和angular-cli webpack,并希望实现chart.js库。

我使用以下方法将chart.js安装到我的项目中:

  

npm install chart.js --save

然后我尝试在我的组件中导入chart.js:

import {Component, OnInit, ViewChild} from '@angular/core';
import 'chart.js/src/chart.js';
declare let Chart;

@Component({
  selector: 'app-dashboard',
  templateUrl: 'dashboard.component.html',
  styleUrls: ['dashboard.component.scss']
})
export class DashboardComponent {

  chart: Chart;

}

但我在控制台日志中收到错误:

[default] /Applications/MAMP/htdocs/bridge/src/app/dashboard/dashboard.component.ts:12:9 
Cannot find name 'Chart'.

我做错了什么?

6 个答案:

答案 0 :(得分:30)

我有一个类似的问题,结果我引用了一个旧的例子。

首先,如果您已经正确完成,请使用NPM安装库:

npm install chart.js --save

然后,在您的组件中,导入库:

import Chart from 'chart.js';

要使用快速示例启动并运行,请查看Chart.js documentation中的示例代码,或参阅下面的示例。

dashboard.component.ts

import Chart from 'chart.js';
import { ViewChild, Component, ElementRef, OnInit } from '@angular/core';

@Component({
    selector: 'app-dashboard',
    template: '<canvas #donut></canvas>'
})

export class DashboardComponent implements OnInit {
    @ViewChild('donut') donut: ElementRef;

    constructor(
    ) { }

    ngOnInit() {
        let donutCtx = this.donut.nativeElement.getContext('2d');

        var data = {
            labels: [
                "Value A",
                "Value B"
            ],
            datasets: [
                {
                    "data": [101342, 55342],   // Example data
                    "backgroundColor": [
                        "#1fc8f8",
                        "#76a346"
                    ]
                }]
        };

        var chart = new Chart(
            donutCtx,
            {
                "type": 'doughnut',
                "data": data,
                "options": {
                    "cutoutPercentage": 50,
                    "animation": {
                        "animateScale": true,
                        "animateRotate": false
                    }
                }
            }
        );
    }
}

答案 1 :(得分:17)

在模板中,不要忘记将 canvas 括在 div 中。 如果 canvas 是dom中custom子目录的直接子节点,则可能无法加载图表。

<div><canvas id="myChart"></canvas></div>

我浪费了很多时间来发现这个问题。

答案 2 :(得分:5)

这是npmjs中少数最好的模块:

angular2-chartjs

然后您可以在模块中使用它:

import { ChartModule } from 'angular2-chartjs';

@NgModule({
  imports: [ ChartModule ]
  // ...
})
export class AppModule {
}

在html模板中:

<chart [type]="type" [data]="data" [options]="options"></chart>

不要忘记填写数据;)

答案 3 :(得分:2)

如果您使用的是webpack,可以尝试将chart.js文件(或缩小版)添加到条目属性中,如下所示:

...
entry: {
      'chartJS': './node_modules/chart.js/dist/Chart.bundle.min.js',
      // Other mappings
}
...

答案 4 :(得分:1)

我使用<p-chart> primeNG来解决这个问题。

只需在index.html中添加:

<script src= "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.bundle.min.js" charset="utf-8"></script>

就是这样,你不必输入你的打字稿。

我在图表文档中找到了

- 然后使用Chart.js CDN。

https://cdnjs.com/libraries/Chart.js

答案 5 :(得分:0)

我试过了。这对我来说很容易实现  https://valor-software.com/ng2-charts/

相关问题