J'utilise Angular2-rc4 avec angular-cli webpack et j'aimerais implémenter une bibliothèque chart.js.
J'ai installé chart.js dans mon projet en utilisant:
npm installer chart.js --save
Ensuite, j'ai essayé d'importer le chart.js dans mon composant:
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;
}
Mais je reçois une erreur dans le journal de la console:
[default] /Applications/MAMP/htdocs/bridge/src/app/dashboard/dashboard.component.ts:12:9
Cannot find name 'Chart'.
Qu'est-ce que je fais mal?
J'ai eu un problème similaire, il est apparu que je faisais référence à un vieil exemple.
Tout d'abord, comme vous l'avez déjà fait correctement, installez la bibliothèque à l'aide de NPM:
npm install chart.js --save
Ensuite, dans votre composant, importez la bibliothèque:
import Chart from 'chart.js';
Pour commencer à utiliser un exemple rapide, consultez l'exemple de code dans Chart.js documentation ou consultez l'exemple ci-dessous.
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
}
}
}
);
}
}
Dans le modèle, n'oubliez pas de mettre canvas dans un div . Si canvas est un enfant direct de la directive personnalisée dans dom, il se peut que chart ne se charge pas.
<div><canvas id="myChart"></canvas></div>
J'ai perdu beaucoup de temps à trouver ce problème.
Voici le meilleur module parmi quelques-uns sur npmjs:
Ensuite, vous pouvez l'utiliser comme ceci dans votre module:
import { ChartModule } from 'angular2-chartjs';
@NgModule({
imports: [ ChartModule ]
// ...
})
export class AppModule {
}
Et dans le modèle html:
<chart [type]="type" [data]="data" [options]="options"></chart>
N'oubliez pas de le remplir avec des données;)
Si vous utilisez Webpack, essayez d’ajouter le fichier chart.js (ou la version modifiée) à la propriété entry comme suit:
...
entry: {
'chartJS': './node_modules/chart.js/dist/Chart.bundle.min.js',
// Other mappings
}
...
J'ai eu ce problème en utilisant <p-chart>
primeNG.
Ajoutez simplement ceci dans votre index.html:
<script src= "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.bundle.min.js" charset="utf-8"></script>
Et c’est tout, vous n’avez pas à importer dans votre TypeScript.
J'ai trouvé ça dans la documentation graphique
-Alors utilisez un CDN Chart.js.
J'ai essayé. cela fonctionne pour moi facile à mettre en œuvre https://valor-software.com/ng2-charts/