我正在尝试使用ng2-charts并遇到错误,说明我使用的元素不正确。
我在这个网站上尝试了几个答案,但没有运气:
NG2-Charts Can't bind to 'datasets' since it isn't a known property of 'canvas'
ng2-charts - Can't bind to 'datasets' since it isn't a known property of 'base-chart'
这是我的代码:
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);
}
}
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
ERROR:
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
答案 0 :(得分:20)
我需要在我想要使用图表的组件的module.ts文件中导入ChartModule。我最初只在app.module.ts中导入它。
答案 1 :(得分:5)
尝试使用属性语法进行绑定:
而不是:
[data]="doughnutChartData"
尝试:
attr.data="{{doughnutChartData}}"
我不确定这是否适用于您的情况,但这与DOM属性与属性的关系以及Angular如何处理两者的绑定有关。
答案 2 :(得分:2)
在app.module.ts文件的NgModule装饰器中,有一个名为imports的数组,像这样在imports数组中提到ChartsModule
导入:[BrowserModule,RouterModule.forRoot(appRoutes), ChartsModule ],
它帮助了我。对您也有帮助
答案 3 :(得分:0)
对于Angular 7或更高版本,请使用
npm安装ng2-charts@2.2.3
-保存npm install chart.js-保存