我怎么能用角度4来获得* ngIf中的Dom元素

时间:2017-04-29 15:20:52

标签: angular

在我的页面中,我使用*ngIf在每个div之间切换有4个步骤,就像

一样
<div *ngIf="step===1"></div>
<div *ngIf="step===2"></div>
<div *ngIf="step===3"></div>
<div *ngIf="step===4"></div>

我在第2步中使用canvas元素来渲染第1步中的数据。 我的问题是,当用户点击下一步按钮时,我会更改step = 2,我需要渲染canvas。但正如我们所知,canvas元素在角度渲染UI之前不会存在。

有没有办法在角度渲染后获得canvas元素?

虽然我知道[hidden]代替*ngIf可以做到这一点,但是有*ngIf方法吗? setTimeout并不是我关注的问题。

1 个答案:

答案 0 :(得分:0)

不是100%确定这是有效的,但值得一试:

 <div *ngIf="...">
   <canvas #canvas>
constructor(private cdRef:ChangeDetectorRef) {}

@ViewChild('cd') canvas:ElementRef;

step = 1;
nextStep() {
  this.step++;
  this.cdRef.detectChanges();
  console.log(this.canvas.nativeElement);
}