chart.jsとangular2に問題があります。 キャンバスにチャートをバインドしようとすると、何も表示されません(角テンプレート内)。 角度の外側はすべて正常に動作します。 My StatisticComponentは、ルータ(ルータ出口)に含まれています。chart.jsはangular2(rc1)に表示されません
コンポーネント:
@Component({
selector: 'statistic',
templateUrl: 'views/statistic.component.html'
})
class ChartComponent implements AfterViewInit {
@ViewChild('canvas') canvasElement;
ngAfterViewInit() {
var ctx = document.getElementById('canvas');
//var ctx = this.canvasElement.nativeElement;
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3]
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
}
}
テンプレート:私はグローバルのHTMLキャンバス(ないテンプレート内)その後、すべての作品にタイムアウトと参照を設定
<h2>Statistic</h2>
<canvas #canvas id="canvas"></canvas>
。
私は1つのに類似のポストが見つかりました: chart does not display in angular2 component
をしかし、このdidntのは助けました。 私はloaderとしてsystemjsを使用しません。私はbrowserifyを使用します。 誰かが助けてくれることを願っています。
// UPDATE
//これは // APPEND NEW ELEMENT
class ChartComponent implements AfterViewInit {
@ViewChild('container') containerElement;
ngAfterViewInit() {
var canvas = document.createElement('canvas');
this.containerElement.nativeElement.appendChild(canvas);
var myChart = new Chart(canvas, {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3]
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
}
}
//これが動作しないWORKS - なぜ? DIRECTLY
class ChartComponent implements AfterViewInit {
@ViewChild('canvas') canvas;
ngAfterViewInit() {
var myChart = new Chart(this.canvas.nativeElement, {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3]
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}]
}
}
});
}
}
:
は、テンプレートを更新しました。たぶん、n2-chartsはchart.jsを使用しているからです。私がViewChildキャンバスにchartjを直接バインドしようとすると、私は説明された結果を得ます。しかし、私は新しい(JavaScriptで)新しいキャンバス要素を作成し、それをビューチャイルドに追加するとすべてが機能します。 –