ज्यादातर मामलों में आप उपयोग करना चाहेंगे {static: false}
। इसे इस तरह सेट करने से क्वेरी मैच सुनिश्चित होंगे जो बाइंडिंग रिज़ॉल्यूशन (जैसे संरचनात्मक निर्देश *ngIf, etc...
) पर निर्भर हैं ।
उपयोग करने के लिए उदाहरण static: false
:
@Component({
template: `
<div *ngIf="showMe" #viewMe>Am I here?</div>
<button (click)="showMe = !showMe"></button>
`
})
export class ExampleComponent {
@ViewChild('viewMe', { static: false })
viewMe?: ElementRef<HTMLElement>;
showMe = false;
}
static: false
अधिक कोणीय 9. पढ़ें में डिफ़ॉल्ट फ़ॉलबैक व्यवहार होने जा रहा है यहाँ और यहाँ
{ static: true }
विकल्प मक्खी पर एम्बेडेड दृश्य बनाने का समर्थन करने के पेश किया गया था। जब आप गतिशील रूप से एक दृश्य बना रहे हैं और एक्सीस करना चाहते हैं TemplateRef
, तो आप ऐसा नहीं कर पाएंगे ngAfterViewInit
क्योंकि यह एक ExpressionHasChangedAfterChecked
त्रुटि का कारण होगा । स्थिर ध्वज को सही पर सेट करने से आपका दृश्य ngOnInit में बन जाएगा।
फिर भी:
अधिकांश अन्य मामलों में, सबसे अच्छा अभ्यास का उपयोग करना है {static: false}
।
इस बात से अवगत रहें कि { static: false }
विकल्प को कोणीय 9. में डिफ़ॉल्ट बनाया जाएगा। इसका मतलब है कि स्टेटिक फ्लैग सेट करना अब आवश्यक नहीं है, जब तक कि आप static: true
विकल्प का उपयोग नहीं करना चाहते ।
आप ng update
अपने वर्तमान कोड आधार को स्वचालित रूप से अपग्रेड करने के लिए कोणीय क्ली कमांड का उपयोग कर सकते हैं ।
माइग्रेशन गाइड और इस बारे में अधिक जानकारी के लिए, आप यहां और यहां देख सकते हैं
स्थिर और गतिशील प्रश्नों के बीच अंतर क्या है?
@ViewChild () और @ContentChild () क्वेरी के लिए स्थिर विकल्प क्वेरी परिणाम उपलब्ध होने पर निर्धारित करता है।
स्थिर क्वेरी (स्थिर: सत्य) के साथ, दृश्य के बनने के बाद क्वेरी हल हो जाती है, लेकिन परिवर्तन का पता लगाने से पहले। परिणाम, हालांकि, आपके विचार में परिवर्तन को प्रतिबिंबित करने के लिए कभी भी अपडेट नहीं किया जाएगा, जैसे कि ngIf और ngFor ब्लॉक में परिवर्तन।
डायनामिक क्वेरी (स्थिर: असत्य) के साथ, क्वेरी क्रमशः @AViewChild () और @ContentChild () के लिए ngAfterViewInit () या ngAfterContentInit () के बाद हल होती है। परिणाम आपके दृश्य में परिवर्तन के लिए अपडेट किया जाएगा, जैसे कि ngIf और ngFor ब्लॉकों में परिवर्तन।