सवाल
@ViewChild
टेम्प्लेट में संबंधित तत्व दिखाए जाने के बाद प्राप्त करने का सबसे सुरुचिपूर्ण तरीका क्या है ?
नीचे एक उदाहरण है। इसके अलावा प्लंकर उपलब्ध है।
टेम्पलेट:
<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()
विधि कहता है तो वह दृश्यमान हो जाता है। हालांकि, कोणीय 2 परिवर्तन का पता लगाने से पहले, मैं संदर्भ नहीं दे सकता viewContainerRef
। मैं आमतौर पर setTimeout(()=>{},1)
ऊपर दिखाए गए अनुसार सभी आवश्यक कार्यों को लपेटता हूं । क्या अधिक सही तरीका है?
मुझे पता है कि इसके साथ एक विकल्प है ngAfterViewChecked
, लेकिन यह बहुत बेकार कॉल का कारण बनता है।