Je suivez ce livre de recettes sur la façon de créer des composants dynamiquement au moment de l'exécution. Tout fonctionne parfaitement, à condition que l'élément @ViewChild
je tente de faire référence en utilisant @ViewChild
ne soit pas transcrit (autrement que la projection de contenu en angulaire 2) dans un autre élément.
Permettez-moi de préciser. J'ai ce code:
@Component({ selector: 'module-landing', templateUrl: './module-landing.template.html', entryComponents: [TravelHeaderContentComponent] }) export class ModuleLandingComponent implements AfterViewInit { @ViewChild(ContentHostDirective) contentHost: ContentHostDirective; ngAfterViewInit() { console.log(this.contentHost); } }
Mon module-landing.template.html
ressemble à ceci:
<some-other-component></some-other-component> <ng-template content-host></ng-template>
Jusqu'ici tout va bien. console.log()
produit l'objet comme prévu.
Cependant, j'ai besoin de transmettre l'élément content-host
dans le même some-other-component
, comme ceci:
<some-other-component> <ng-template content-host></ng-template> </some-other-component>
Cela tombe. La référence @ViewChild()
est maintenant undefined
. La modification de @ViewChild()
sur @ContentChild()
n'a aucun effet.
Comment puis-je faire ceci?