2016-09-29 9 views
10

Mam element nadrzędny, który otwiera nowy komponent po kliknięciu łącza, ten nowy komponent powinien mieć przycisk zamykania, który przy zamknięciu wysyła wiadomość zamykającą do rodzica i niszczy się .Czy komponent wywołuje zdarzenie samozniszczenia

Możemy wysłać wiadomość zamykającą, używając metody ngOnDestroy, ale w jaki sposób powołać się na zniszczenie komponentu potomnego.

<parent> 
    <child></child> //child to be opened on click but close 
        //event should be inside the child componenet 
</parent> 

Popraw mnie, jeśli mam tu jakiś błąd koncepcyjny. Dzięki

Odpowiedz

15

Jeśli dodać komponent używając ViewContainerRef.createComponent() jak pokazany w Angular 2 dynamic tabs with user-click chosen components, wówczas komponent może zniszczyć się kiedy przechodzą cmpRef do tworzonego komponentu.

W przeciwnym razie nie sądzę, że istnieje sposób. Możesz przekazać wartość rodzicowi, aby *ngIf usunął komponent.

<child *ngIf="showChild" (close)="showChild = false"></child> 
class ParentComponent { 
    showChild:boolean = true; 
} 
class ChildComponent { 
    @Output() close = new EventEmitter(); 

    onClose() { 
    this.close.emit(null); 
    } 
} 
+1

To czysty roztwór, musiałem też coś takiego kilka dni temu i zrobiłem to dokładnie tak samo. Nie sądzę, że jest lepszy sposób na osiągnięcie tego w tej chwili. –

+0

@ Günter Zöchbauer, czy możesz pokazać, jak używać "zamknij" w maszynopisie komponentu potomnego? Jak wywołać zdarzenie close? –

+0

Dziękuję za odpowiedź –

-2

Nie jestem pewien co do czystości takiego rozwiązania, ale użyłem:

this.viewContainerRef. 
     element.nativeElement. 
     parentElement. 
     removeChild(this.viewContainerRef.element.nativeElement); 
+1

@ daniele3004 opieki wyjaśnić, dlaczego negatywny głos? –

Powiązane problemy