无法绑定到'data',因为它不是'canvas'的已知属性

时间:2017-05-10 21:41:08

标签: angular chart.js

我正在尝试使用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

4 个答案:

答案 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-保存