如何知道在Angular 2中何时将元素添加到DOM?
问题描述:
我需要操作由一个*ngIf
指令隐藏DOM元素:如何知道在Angular 2中何时将元素添加到DOM?
<div *ngIf="myBoolean">
<canvas id="myElement"></canvas>
</div>
点击一个按钮后,我运行下面的方法:
showMyElement(){
this.myBoolean = true; //This shows the div containing myElement
console.log(document.getElementById('myElement')); //This gives me null
}
但是,如果我通过点击获得myElement
可见之后的另一个按钮,我没有得到null
。我想,当我第一次得到它时,它还没有被添加到DOM中。如何知道myElement
何时添加到DOM?有没有像(ngModelChange)
但添加到DOM时?谢谢!
答
您可以手动运行变更检测周期,以确保您的视图更新
constructor(private cdRef: ChangeDetectorRef) {}
showMyElement(){
this.myBoolean = true;
this.cdRef.detectChanges(); // redraw view
console.log(document.getElementById('myElement')); //This gives me null
}
也
工作就像一个魅力见。非常感谢! –