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'.
私は何を間違えていますか?
同様の問題がありましたが、古い例を参照していることがわかりました。
最初に、すでに正しく行っているように、NPMを使用してライブラリをインストールします。
npm install chart.js --save
次に、コンポーネントでライブラリをインポートします。
import Chart from 'chart.js';
簡単なサンプルを作成して実行するには、Chart.js documentation のサンプルコードをご覧になるか、以下の例をご覧ください。
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
}
}
}
);
}
}
テンプレートでは、divでcanvasを囲むことを忘れないでください。 canvasがdomのカスタムディレクティブの直接の子である場合、チャートが読み込まれない場合があります。
<div><canvas id="myChart"></canvas></div>
この問題を見つけるのに多くの時間を無駄にしました。
Npmjsのいくつかの中で最高のモジュールを次に示します。
次に、モジュールで次のように使用できます。
import { ChartModule } from 'angular2-chartjs';
@NgModule({
imports: [ ChartModule ]
// ...
})
export class AppModule {
}
そして、htmlテンプレートで:
<chart [type]="type" [data]="data" [options]="options"></chart>
データを入力することを忘れないでください;)
Webpackを使用している場合、chart.jsファイル(または縮小バージョン)をentryプロパティに追加してみてください。次のとおりです。
...
entry: {
'chartJS': './node_modules/chart.js/dist/Chart.bundle.min.js',
// Other mappings
}
...
<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://valor-software.com/ng2-charts/