질문
@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
있지만 너무 많은 쓸모없는 호출이 발생합니다.