Lorsqu'un ViewContainerRef est injecté dans une directive à quel élément est-il lié?
Par exemple, si nous avons un modèle:
constructor(vc: ViewContainerRef) {
}
Et le constructeur de la vcdirective ressemble à ceci:
template `<div><span vcdirective></span></div>`
Est l'élément auquel le vc: ViewContainerRef est lié à l'élément span ?
3 Réponses :
veuillez vérifier ceci pour mieux comprendre. c'est un espace réservé qui peut être attaché à un autre élément. vérifiez https://netbasal.com/angular-2-understanding-viewcontainerref-acc183f3b682 a> quelque chose comme: @Component({
selector: 'vcr',
template: `
<template #tpl>
<h1>ViewContainerRef</h1>
</template>
`,
})
export class VcrComponent {
@ViewChild('tpl') tpl;
constructor(private _vcr: ViewContainerRef) {
}
ngAfterViewInit() {
this._vcr.createEmbeddedView(this.tpl);
}
}
Puisque vous utilisez l'injection de constructeur sur le composant, ViewContainerRef est lié à l'élément hôte, qui dans ce cas sera le sélecteur vcr IIUC.
Oui, il sera lié à l'élément span. Si vous console le vc dans le constructeur, vous verrez l'objet ViewContainerRef, vérifiez la propriété de l'élément, vous y trouverez span . Mais lorsque vous attacherez la vue dans le conteneur, elle sera ajoutée à côté de span au lieu d'être insérée à l'intérieur et span restera suspendu.
Oui, il doit s'étendre. ViewContainerRef représente un conteneur dans lequel une ou plusieurs vues peuvent être jointes. Nous pouvons utiliser ses méthodes telles que createEmbeddedView () et createComponent () . ViewContainerRef est utilisé pour créer des composants dynamiques .