ng2-charts
パッケージを使用する角度(2)のアプリケーションがあります。私のコンポーネントの1つに、サーバーから照会するデータを含む円グラフが表示されます。成分を以下に示す:ng2-chartsは更新されたラベルを表示せず、データのみ
export class PieChartComponent implements OnInit {
data: Array<number> = [];
labels: Array<string> = ['', '', '', ''];
private line: string;
private department: string;
constructor(public dataService: LineService, private route: ActivatedRoute) {
this.route.params.forEach((params: Params) => {
this.department = params['dep'];
this.line = params['id'];
});
}
ngOnInit() {
this.dataService.getLineTAL(this.department, this.line).forEach(result => {
this.data = result.map(val => val.val);
this.labels = result.map(val => val.tag);
});
}
}
とHTML:
<div style="display: block">
<canvas baseChart [data]="data" [labels]="labels" [chartType]="'pie'" (chartClick)="chartClicked($event)" width="1" height="1"></canvas>
</div>
デバッガを実行する場合、私はthis.labels
が正しくの値でなければならない文字列の配列を含むように更新されていることを確認することができグラフのデータラベル。しかし、グラフが正しいデータをレンダリングし、ない値を取得私の上にホバーのように:
デフォルトの色はすべてグレーに変更されている理由を、私もわかりませんか?私はそれを自分のコンポーネントに振りかけるまで、このロジックとUIはうまく動作しています。
他の質問でも指摘されているように、サービスコールの前に@ViewChild(BaseChartDirective) chart: BaseChartDirective;
の図があるthis.chart.ngOnChanges({});
を追加しようとしました。また、結果マッピングの最後にthis.labels = this.labels.slice();
を試して強制的にリフレッシュを試みましたが、いずれも助けになりませんでした。
更新:
コメントで述べたように、ngAfterViewInit
イベントで、チャートオブジェクトは、正しいデータとラベルプロパティ(アレイ)を含みます。しかし、まだ適切に表示されていません。
生成した結果のグラフオブジェクトをデバッグしましたか? オブジェクトのプロパティが正しく設定されているかどうかを明示するには、ngAfterViewInit()のヒット時にチャートオブジェクトのプロパティをデバッグしてチェックします。 – Nugu
@nuguグラフオブジェクトはngAfterViewInitに記録され、プロパティー 'labels:Array(4)0:" station1 "、1:" station2 "、2:" station4 "、3:" station7 "データプロパティ?問題がどこにあるのかまだ分かりません。 –
私は個人的にng2-chartsを使用していませんが、自分の例でグラフプロパティを実行することをお勧めします(http://plnkr.co/edit/7fGsiuRjcF0M0Ffeoml2?p=preview) グラフのプロパティを設定し、あなたは同じ結果を受け取ります。最新のバージョン – Nugu