Angular2 Zerstören Strom-Komponente Komplett
Ich habe versucht, die Suche, google und stackoverflow konnte aber keine Antwort finden. Also meine Frage ist einfach "Wie kann ich entfernen, aktuelle Komponente in den Winkel-2, 4"
Beispiel:
<div (click)="remove($event)">Remove Current Component</div>
remove($event) {
//this.destroy() ????
}
Im Grunde, was ich will, ist ComponentRef
sehen diese Antwort ngOnDestroy()
fordert this.cmpRef.destroy()
:
ngOnDestroy() {
if(this.cmpRef) {
this.cmpRef.destroy();
}
}
Aber er wird immer der ComponentRef
durch die dynamische Erstellung der Komponente.
navigieren Sie einfach Weg von der Komponente, wird es zerstört werden
ich bin nicht mit
Ich habe dasselbe Problem beim schließen eines overlay
ich bin nicht mit
router
ich bin nur, indem es in den DOMIch habe dasselbe Problem beim schließen eines overlay
InformationsquelleAutor Touqeer Shafi | 2017-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine
*ngIf="myBoolean"
Richtlinie über die component-element in der übergeordneten Vorlage. WennmyBoolean
wirdfalse
, wird die Komponente zerstört werden.Keine weitere Komponente oder ein DOM-element vorhanden. (und
ngOnDestroy
Ereignis ausgelöst)Wenn
myBoolean
wirdtrue
wieder eine neue Komponente instanziiert werden.Erscheint eine neue im DOM (und
ngOnInit
Ereignis ausgelöst)Ihre click-Ereignis emittieren kann ein Ereignis (gebunden in der Elternteil mit dem (myEventEmitter) syntax, und eine Methode, in der übergeordneten Komponente können, dann setzen Sie einfach den boolean
false
.Demonstration auf diese Plunker. Wenn es nicht passt Ihren Bedarf, prüfen, Bearbeiten Ihre Frage zu bieten, mehr spezifische details, einschließlich eine Minimal Vollständige, Überprüfbare Beispiel
aber die ngIf macht genau das, nicht ? Nicht mehr DOM-Komponente.
ja aber die Referenz existiert in der Winkelposition für die spätere Verwendung von
*ngIf
ich möchte Komponente zu komplettdestory
Aber ComponentRef repräsentiert Referenz auf Instanzen der Komponente. Destroy löscht Instanzen von Komponenten ich bin nicht sicher, dass Sie tun können was Sie wollen ganz einfach (obwohl ich gerne löschen diesen Kommentar und meine Antwort, wenn es möglich ist)... Vielleicht dynamisch entfernen Sie das Modul aus der Anwendung wäre der Weg zu gehen
was meinst du, ist es gemeinsame? nicht sinnvoll ist. Zum Beispiel, wenn Sie verwenden
<ng-container *ngIf="included"> ***your component / markup***</ng-container>
es wird nichts in Ihrem DOM Links in Ihrem markup.InformationsquelleAutor Pac0
Können Sie
nativeElement.remove()
Methode, um physisch entfernen Sie das Filterelement. So könnte der code wie folgt Aussehen:Damit die Logik der Zerstörung ist incapsulated in der Komponente und Sie können es sogar als eine einzelne benutzerdefinierte element. Sehen dieses Beispiel für mehr details. Es basiert auf Angular Benutzerdefinierte Elemente, nicht eine Eckige Anwendung.
Ist dies der Fall, Sie waren auf der Suche für?
InformationsquelleAutor Sergey Mell