题
@ViewChild显示模板中相应元素后最优雅的方法是什么?
以下是一个例子。也有Plunker可用。
模板:
<div id="layout" *ngIf="display">
<div #contentPlaceholder></div>
</div>
零件:
export class AppComponent {
display = false;
@ViewChild('contentPlaceholder', {read: ViewContainerRef}) viewContainerRef;
show() {
this.display = true;
console.log(this.viewContainerRef); // undefined
setTimeout(()=> {
console.log(this.viewContainerRef); // OK
}, 1);
}
}
我有一个默认隐藏其内容的组件。当有人调用show()方法时,它变得可见。但是,在Angular 2变更检测完成之前,我无法参考viewContainerRef。我通常将所有必需的操作包装成setTimeout(()=>{},1)如上所示。有更正确的方法吗?
我知道有一个选项ngAfterViewChecked,但它会导致太多无用的通话。
largeQ
守着一只汪
慕虎7371278
相关分类