我正在使用Angular2-rc4和angular-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'.
我做错了什么?
答案 0 :(得分:30)
我有一个类似的问题,结果我引用了一个旧的例子。
首先,如果您已经正确完成,请使用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
}
}
}
);
}
}
答案 1 :(得分:17)
在模板中,不要忘记将 canvas 括在 div 中。 如果 canvas 是dom中custom子目录的直接子节点,则可能无法加载图表。
<div><canvas id="myChart"></canvas></div>
我浪费了很多时间来发现这个问题。
答案 2 :(得分:5)
这是npmjs中少数最好的模块:
然后您可以在模块中使用它:
import { ChartModule } from 'angular2-chartjs';
@NgModule({
imports: [ ChartModule ]
// ...
})
export class AppModule {
}
在html模板中:
<chart [type]="type" [data]="data" [options]="options"></chart>
不要忘记填写数据;)
答案 3 :(得分:2)
如果您使用的是webpack,可以尝试将chart.js文件(或缩小版)添加到条目属性中,如下所示:
...
entry: {
'chartJS': './node_modules/chart.js/dist/Chart.bundle.min.js',
// Other mappings
}
...
答案 4 :(得分:1)
我使用<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>
就是这样,你不必输入你的打字稿。
我在图表文档中找到了
- 然后使用Chart.js CDN。
答案 5 :(得分:0)
我试过了。这对我来说很容易实现 https://valor-software.com/ng2-charts/