javascript - Använda getElementById i Angular returnerar undefined
För enkelhetens skull tar jag bort den onödiga koden.
Redan försökt med ngAfterViewInit och ngOnChanges och ändå är this.chart odefinierad.
.html
<div class="chartContainer">
<canvas id="chart" class="canvas"></canvas>
</div>
.ts
ngOnInit() {
this.drawChart();
}
drawChart() {
this.chart = document.getElementById("chart");
console.log(this.chart);
}
Svar #1
Jag skulle använda ViewChild för en bindning:
html
<div class="chartContainer">
<canvas #chart id="chart" class="canvas"></canvas>
</div>
ts
@ViewChild('chart') chart: ElementRef<HTMLCanvasElement>; // Might need to add { static: true } after 'chart;
ngAfterViewInit() {
console.log(this.chart.nativeElement)
}
Svar #2
Du bör injicera tjänst i din komponent för att anropa dokument.
import { DOCUMENT } from '@angular/common';
export class YourComponent {
constructor(@Inject(DOCUMENT) private document: HTMLDocument) {
...
