在Angular中使用getElementById返回未定义

时间:2020-06-03 13:11:18

标签: javascript html angular typescript angular9

为简单起见,我删除了不必要的代码。

已尝试使用 ngAfterViewInit ngOnChanges ,但 this.chart 尚未定义。

.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);
}

2 个答案:

答案 0 :(得分:2)

我会使用ViewChild绑定:

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)
}

答案 1 :(得分:0)

您应该将服务注入到您的呼叫文档组件中。

import { DOCUMENT } from '@angular/common';

export class YourComponent {
  constructor(@Inject(DOCUMENT) private document: HTMLDocument) {
...