J'essaie d'utiliser ng2-charts et je rencontre une erreur qui dit que les éléments que j'utilise sont incorrects.
J'ai essayé quelques réponses sur ce site, mais pas de chance:
Voici mon code:
import { Component } from "@angular/core";
@Component({
moduleId: module.id,
templateUrl: "four-item-horse-shoe-graph.component.html",
styleUrls: ["four-item-horse-shoe-graph.component.css"],
selector: "four-item-horse-shoe"
})
export class FourItemHorseShoeGraphComponent {
// Doughnut
public doughnutChartLabels: string[] = ["Download Sales", "In-Store
Sales", "Mail-Order Sales"];
public doughnutChartData: number[] = [350, 450, 100];
public doughnutChartType: string = "doughnut";
// events
public chartClicked(e: any): void {
console.log(e);
}
public chartHovered(e: any): void {
console.log(e);
}
}
Et le HTML:
<div style="display: block">
<canvas baseChart
[data]="doughnutChartData"
[labels]="doughnutChartLabels"
[chartType]="doughnutChartType"
(chartHover)="chartHovered($event)"
(chartClick)="chartClicked($event)">
</canvas>
systemjs.config.js:
'chart': 'npm:chart.js/src/chart.js',
"ng2-charts": "node_modules/ng2-charts"
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
app: {
main: './main.js',
defaultExtension: 'js'
},
rxjs: {
defaultExtension: 'js'
},
"ng2-charts": { main: "ng2-charts.js", defaultExtension: "js" }
app.module.ts
import { ChartsModule } from "ng2-charts/ng2-charts";
declare let jQuery: Object;
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
RouterModule,
CoreFeatureModule,
LayoutModule,
ChartsModule
ERREUR:
Unhandled Promise rejection: Template parse errors:
Can't bind to 'data' since it isn't a known property of 'canvas'. ("<div style="display: block">
<canvas baseChart
[ERROR ->][data]="doughnutChartData"
[labels]="doughnutChartLabels"
[chartType]="doughnutCh"): FourItemHorseShoeGraphComponent@2:9
Can't bind to 'labels' since it isn't a known property of 'canvas'. ("
<canvas baseChart
[data]="doughnutChartData"
[ERROR ->][labels]="doughnutChartLabels"
[chartType]="doughnutChartType"
(chartHover)="char"): FourItemHorseShoeGraphComponent@3:9
Can't bind to 'chartType' since it isn't a known property of 'canvas'. ("
[data]="doughnutChartData"
[labels]="doughnutChartLabels"
[ERROR ->][chartType]="doughnutChartType"
(chartHover)="chartHovered($event)"
(chartClick)="): FourItemHorseShoeGraphComponent@4:9 ; Zone: <root> ; Task: Promise.then ; Value: SyntaxError {_nativeError: Error: Template parse errors:
Can't bind to 'data' since it isn't a known property of 'canvas'. ("<d…} Error: Template parse errors:
Can't bind to 'data' since it isn't a known property of 'canvas'. ("<div style="display: block">
<canvas baseChart
[ERROR ->][data]="doughnutChartData"
[labels]="doughnutChartLabels"
[chartType]="doughnutCh"): FourItemHorseShoeGraphComponent@2:9
Can't bind to 'labels' since it isn't a known property of 'canvas'. ("
<canvas baseChart
[data]="doughnutChartData"
[ERROR ->][labels]="doughnutChartLabels"
[chartType]="doughnutChartType"
(chartHover)="char"): FourItemHorseShoeGraphComponent@3:9
Can't bind to 'chartType' since it isn't a known property of 'canvas'. ("
[data]="doughnutChartData"
[labels]="doughnutChartLabels"
[ERROR ->][chartType]="doughnutChartType"
(chartHover)="chartHovered($event)"
(chartClick)="): FourItemHorseShoeGraphComponent@4:9
at SyntaxError.BaseError [as constructor] (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:1595:29) [<root>]
at new SyntaxError (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:1793:18) [<root>]
at TemplateParser.parse (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:11222:21) [<root>]
at JitCompiler._compileTemplate (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27474:70) [<root>]
at eval (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27357:64) [<root>]
at Set.forEach (native) [<root>]
at JitCompiler._compileComponents (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27357:21) [<root>]
at createResult (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27240:21) [<root>]
at Zone.run (http://localhost:44444/node_modules/zone.js/dist/zone.js:113:43) [<root> => <root>]
at http://localhost:44444/node_modules/zone.js/dist/zone.js:520:57 [<root>]
at Zone.runTask (http://localhost:44444/node_modules/zone.js/dist/zone.js:151:47) [<root> => <root>]
at drainMicroTaskQueue (http://localhost:44444/node_modules/zone.js/dist/zone.js:418:35) [<root>]
at XMLHttpRequest.ZoneTask.invoke (http://localhost:44444/node_modules/zone.js/dist/zone.js:349:25) [<root>]
consoleError @ zone.js:405
_loop_1 @ zone.js:434
drainMicroTaskQueue @ zone.js:438
ZoneTask.invoke @ zone.js:349
zone.js:407 Error: Uncaught (in promise): Error: Template parse errors:
Can't bind to 'data' since it isn't a known property of 'canvas'. ("<div style="display: block">
<canvas baseChart
[ERROR ->][data]="doughnutChartData"
[labels]="doughnutChartLabels"
[chartType]="doughnutCh"): FourItemHorseShoeGraphComponent@2:9
Can't bind to 'labels' since it isn't a known property of 'canvas'. ("
<canvas baseChart
[data]="doughnutChartData"
[ERROR ->][labels]="doughnutChartLabels"
[chartType]="doughnutChartType"
(chartHover)="char"): FourItemHorseShoeGraphComponent@3:9
Can't bind to 'chartType' since it isn't a known property of 'canvas'. ("
[data]="doughnutChartData"
[labels]="doughnutChartLabels"
[ERROR ->][chartType]="doughnutChartType"
(chartHover)="chartHovered($event)"
(chartClick)="): FourItemHorseShoeGraphComponent@4:9
Error: Template parse errors:
Can't bind to 'data' since it isn't a known property of 'canvas'. ("<div style="display: block">
<canvas baseChart
[ERROR ->][data]="doughnutChartData"
[labels]="doughnutChartLabels"
[chartType]="doughnutCh"): FourItemHorseShoeGraphComponent@2:9
Can't bind to 'labels' since it isn't a known property of 'canvas'. ("
<canvas baseChart
[data]="doughnutChartData"
[ERROR ->][labels]="doughnutChartLabels"
[chartType]="doughnutChartType"
(chartHover)="char"): FourItemHorseShoeGraphComponent@3:9
Can't bind to 'chartType' since it isn't a known property of 'canvas'. ("
[data]="doughnutChartData"
[labels]="doughnutChartLabels"
[ERROR ->][chartType]="doughnutChartType"
(chartHover)="chartHovered($event)"
(chartClick)="): FourItemHorseShoeGraphComponent@4:9
at SyntaxError.BaseError [as constructor] (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:1595:29) [<root>]
at new SyntaxError (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:1793:18) [<root>]
at TemplateParser.parse (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:11222:21) [<root>]
at JitCompiler._compileTemplate (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27474:70) [<root>]
at eval (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27357:64) [<root>]
at Set.forEach (native) [<root>]
at JitCompiler._compileComponents (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27357:21) [<root>]
at createResult (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27240:21) [<root>]
at Zone.run (http://localhost:44444/node_modules/zone.js/dist/zone.js:113:43) [<root> => <root>]
at http://localhost:44444/node_modules/zone.js/dist/zone.js:520:57 [<root>]
at Zone.runTask (http://localhost:44444/node_modules/zone.js/dist/zone.js:151:47) [<root> => <root>]
at drainMicroTaskQueue (http://localhost:44444/node_modules/zone.js/dist/zone.js:418:35) [<root>]
at XMLHttpRequest.ZoneTask.invoke (http://localhost:44444/node_modules/zone.js/dist/zone.js:349:25) [<root>]
at SyntaxError.BaseError [as constructor] (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:1595:29) [<root>]
at new SyntaxError (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:1793:18) [<root>]
at TemplateParser.parse (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:11222:21) [<root>]
at JitCompiler._compileTemplate (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27474:70) [<root>]
at eval (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27357:64) [<root>]
at Set.forEach (native) [<root>]
at JitCompiler._compileComponents (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27357:21) [<root>]
at createResult (http://localhost:44444/node_modules/@angular/compiler/bundles/compiler.umd.js:27240:21) [<root>]
at Zone.run (http://localhost:44444/node_modules/zone.js/dist/zone.js:113:43) [<root> => <root>]
at http://localhost:44444/node_modules/zone.js/dist/zone.js:520:57 [<root>]
at Zone.runTask (http://localhost:44444/node_modules/zone.js/dist/zone.js:151:47) [<root> => <root>]
at drainMicroTaskQueue (http://localhost:44444/node_modules/zone.js/dist/zone.js:418:35) [<root>]
at XMLHttpRequest.ZoneTask.invoke (http://localhost:44444/node_modules/zone.js/dist/zone.js:349:25) [<root>]
at resolvePromise (http://localhost:44444/node_modules/zone.js/dist/zone.js:486:31) [<root>]
at resolvePromise (http://localhost:44444/node_modules/zone.js/dist/zone.js:471:17) [<root>]
at http://localhost:44444/node_modules/zone.js/dist/zone.js:520:17 [<root>]
at Zone.runTask (http://localhost:44444/node_modules/zone.js/dist/zone.js:151:47) [<root> => <root>]
at drainMicroTaskQueue (http://localhost:44444/node_modules/zone.js/dist/zone.js:418:35) [<root>]
at XMLHttpRequest.ZoneTask.invoke (http://localhost:44444/node_modules/zone.js/dist/zone.js:349:25) [<root>]
consoleError @ zone.js:407
_loop_1 @ zone.js:434
drainMicroTaskQueue @ zone.js:438
ZoneTask.invoke @ zone.js:349
J'avais besoin d'importer le ChartModule dans le fichier module.ts du composant dans lequel je voulais utiliser le graphique. Au départ, je l'avais seulement importé dans app.module.ts.
Essayez d'utiliser la syntaxe d'attribut pour la liaison:
Au lieu de:
[data]="doughnutChartData"
Essayer:
attr.data="{{doughnutChartData}}"
Je ne sais pas si cela fonctionnera dans votre cas, mais cela a à voir avec ce qu'est une propriété DOM par rapport à un attribut, et comment Angular gère la liaison pour les deux.
Dans le fichier app.module.ts, dans le décorateur NgModule, il y a un tableau appelé imports, mentionnez ChartsModule dans le tableau des importations comme ceci
importe: [BrowserModule, RouterModule.forRoot (appRoutes), ChartsModule],
Ça m'a aidé. Cela peut aussi vous être utile
Pour Angular 7 ou version supérieure, utilisez
npm install [email protected]
--save npm install chart.js --save