Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to implement chart.js in Angular2

I'm using Angular2-rc4 with angular-cli webpack and would like to implement a chart.js library.

I've installed chart.js to my project using:

npm install chart.js --save

Then I've tried to import the chart.js in my component:

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;

}

But I get an error in console log:

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

What am I doing wrong?

like image 331
rvaliev Avatar asked Aug 22 '16 16:08

rvaliev


People also ask

Can I use chart JS in angular?

It allows us to create responsive bar charts, pie charts, line plots, donut charts, scatter plots, and other graphs. Simply select where on your page you want a graph to appear, what type of graph you want to plot, and then provide data, labels, and other options to Chart js.


1 Answers

I had a similar issue, it turned out I was referencing an old example.

First, as you've already correctly done, install the library using NPM:

npm install chart.js --save

Then, in your component, import the library:

import Chart from 'chart.js';

To get up and running with a quick example, have a look at the example code in the Chart.js documentation or see my example below.


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
                    }
                }
            }
        );
    }
}
like image 96
iMe Avatar answered Oct 10 '22 09:10

iMe