मैं तीन घटक होते हैं: अनुप्रयोग, जनक, एवं बाल:@ContentChildren आबादी किया जा रहा है
अनुप्रयोग घटक
@Component({
selector: 'app',
directives: [Parent,Child],
template: '<parent><child>hi</child><child>there</child></parent>'
})
export class AppComponent {
constructor() {
}
}
जनक घटक
@Component({
selector: 'parent',
template: '<div><h1>Parent</h1><ng-content></ng-content></div>'
})
export class Parent {
@ContentChildren(Child) children: QueryList<Child>;
ngAfterContentInit() {
console.log(this.children);
}
}
बाल घटक
@Component({
selector: 'child',
template: '<div><h1>Child</h1></div>'
})
export class Child {
}
आप जनक घटक में देख सकते हैं, मैं @ContentChildren
उपयोग करने के लिए बाल घटकों की सूची प्राप्त करने की कोशिश की है, एक चयनकर्ता के रूप में Child
प्रकार का उपयोग। हालांकि, यह काम नहीं प्रतीत होता है - सामग्री बच्चों की सूची हमेशा अनिर्धारित होती है।
ngAfterContentInit()
विधि में, मैं उम्मीद है | सामग्री बच्चों आबादी वाले किया जाना है।
क्या मुझे कुछ याद आ रही है?
[अपडेट]
तो यह पता चला है कि समस्या मौजूद है जब सभी तीन घटकों एक ही फाइल में हैं (कंसोल डिबग विंडो देखते हैं, जहां मैं उत्पादन सामग्री बच्चों):
वे अलग फ़ाइलों में हैं, तो समस्या दूर हो जाने:
आम तौर पर, मैं केवल सीखने प्रयोजनों के लिए एक ही फाइल में सभी घटकों को रखते हैं। लेकिन यह मुझे उत्सुक है। क्या कोई जानता है कि व्यवहार अलग क्यों है?
बच्चों डोम में दिखाई दे रहे हैं? मैंने अभी कोशिश की (डार्ट में) और यह काम कर रहा है। आप एक अधिक अनुमोदक प्रकार की तुलना में '' any' की तरह चर के लिए QueryList 'कोशिश की है। –
@ GünterZöchbauer मैं किसी भी करने के लिए प्रकार बदलने लेकिन समस्या अभी भी वहाँ है की कोशिश की। ऐसा लगता है कि यह एक ही फाइल में होने वाले सभी तीन घटकों से संबंधित है। – pixelbits
मैं डार्ट में पुन: पेश नहीं कर सकता (अगर यह कोई मदद है), यह एक फ़ाइल में सब कुछ के साथ भी काम करता है। –