我想創建一個鏈接,允許用戶下載顯示的圖表。我目前試圖讓它起作用的方式是.toDataUrl
這被認爲是一種安全的方式,或者是有另一種方式去做這件事。將NG2圖表導出到PNG圖像
HTML:
<canvas id="myChart" baseChart [colors]="colorsOverride" [datasets]="barChartData" [labels]="barChartLabels" [options]="barChartOptions" [legend]="barChartLegend"
[chartType]="barChartType" (chartHover)="chartHovered($event)" (chartClick)="chartClicked($event)">
</canvas>
<div class="footer">
<button (click)="exportGraph()">Export Graph</button>
</div>
組件:
export_graph = <HTMLCanvasElement>document.getElementById("myChart");
downloadLink: string;
exportGraph(){
this.downloadLink = this.export_graph.toDataURL("image/png");
}
當我嘗試出口,這是錯誤消息我在控制檯中看到: Cannot read property 'toDataURL' of null
在行'export_graph = document.getElementById(「myChart」);'被執行的時候,組件的dom不會被構造。因此,它將返回null。嘗試把它放在'ngAfterViewInit'中,並且不要忘記實現'AfterViewInit' ..工作在一個蹲點和答案。 –
[爲什麼jQuery或像getElementById這樣的DOM方法找不到元素?](http://stackoverflow.com/questions/14028959/why-does-jquery-or-a-dom-method-such- as-getelementbyid-not-the-element) –
@MikeMcCaughan很好 - 我使用typecript和angular2,我的問題更傾向於使用ng-charts(charts.js),並且沒有建議的解決方案適用於我的代碼結構體。 – bluePearl