Reputation: 3020
I'm trying to figure out why why angular 4 ChartJS component isn't rendering.
I've installed the package using yarn, and it exists and imports correctly. I can see the Chart object in the chrome console, but the canvas element remains blank.
import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import Chart from 'chart.js';
@Component({
selector: 'app-root',
template: '<canvas #aChart></canvas>',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
@ViewChild('aChart') htmlChart: ElementRef;
public data = {
labels: [
'Value A',
'Value B'
],
datasets: [
{
'data': [101342, 55342], // Example data
'backgroundColor': [
'#1fc8f8',
'#76a346'
]
}]
};
constructor(public myElement: ElementRef) {}
ngOnInit() {
const ctx: CanvasRenderingContext2D = this.htmlChart.nativeElement.getContext('2d');
const newChart: Chart = new Chart(ctx, {
'type': 'doughnut',
'data': this.data,
'options': {
'cutoutPercentage': 50,
'animation': {
'animateScale': true,
'animateRotate': false
}
}
});
console.log('chart', newChart);
}
}
Upvotes: 6
Views: 1318
Reputation: 3020
You need to ensure the containing element has a display type of `block'. As pointed out in earlier thread it can either be wrapped in a div, or in angular4, simply set the :host css element to:
:host {
display: block
}
Upvotes: 2
Reputation: 1243
You need to enclose canvas
element inside div
template: '<div><canvas #aChart></canvas></div>',
Upvotes: 11