J'ai un composant parent qui ouvre un nouveau composant en cliquant sur un lien, ce nouveau composant est censé avoir un bouton de fermeture qui, à la fermeture, envoie un message de fermeture au parent et se détruit.
Nous pouvons envoyer le message de fermeture en utilisant la méthode ngOnDestroy
, mais comment invoquer la destruction du composant enfant.
<parent>
<child></child> //child to be opened on click but close
//event should be inside the child componenet
</parent>
Corrigez-moi si j'ai une erreur conceptuelle ici. Merci
Si vous ajoutez un composant à l'aide de ViewContainerRef.createComponent()
comme indiqué dans Angular 2 onglets dynamiques avec les composants choisis par l'utilisateur , alors le composant peut se détruire lui-même lorsque vous passez cmpRef
à le composant créé.
Sinon, je ne pense pas qu'il y ait un moyen. Vous pouvez transmettre une valeur au parent afin qu'un *ngIf
supprime le composant.
<child *ngIf="showChild" (close)="showChild = false"></child>
class ParentComponent {
showChild:boolean = true;
}
class ChildComponent {
@Output() close = new EventEmitter();
onClose() {
this.close.emit(null);
}
}
Pas sûr de la propreté d'une telle solution, mais j'ai utilisé:
this.viewContainerRef
.element
.nativeElement
.parentElement
.removeChild(this.viewContainerRef.element.nativeElement);