web-dev-qa-db-ja.com

Angular2でchart.jsを実装する方法

Angular2-rc4をangle-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'.

私は何を間違えていますか?

16
rvaliev

同様の問題がありましたが、古い例を参照していることがわかりました。

最初に、すでに正しく行っているように、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
                    }
                }
            }
        );
    }
}
30
iMe

テンプレートでは、divcanvasを囲むことを忘れないでください。 canvasがdomのカスタムディレクティブの直接の子である場合、チャートが読み込まれない場合があります。

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

この問題を見つけるのに多くの時間を無駄にしました。

19
Karthik P

Npmjsのいくつかの中で最高のモジュールを次に示します。

angular2-chartjs

次に、モジュールで次のように使用できます。

import { ChartModule } from 'angular2-chartjs';

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

そして、htmlテンプレートで:

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

データを入力することを忘れないでください;)

5
XAMelleOH

Webpackを使用している場合、chart.jsファイル(または縮小バージョン)をentryプロパティに追加してみてください。次のとおりです。

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

<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>

そして、それだけです。TypeScriptにインポートする必要はありません。

私はそれをチャートのドキュメントで見つけました

-Chart.js CDNを使用します。

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

1
JFB

私は試した。これは簡単に実装できます https://valor-software.com/ng2-charts/

0
Mahendra Waykos