2017-10-13 3 views
0

Ich habe folgende Hierarchie in meiner App:Angular 4 - So rufen Sie die übergeordnete Methode aus der untergeordneten Komponente ohne EventEmitter auf?

AppComponent » ThemeComponent » HeaderNavComponent 

Die ThemeComponent hat eine Methode

qrIconClicked(){ 

    } 

ich diese Methode von HeaderNavComponent aufrufen müssen.

Wie kann ich das tun?

+0

Sie können die 'Injector' verwenden, um eine Instanz der Komponente zu erhalten: https://angular.io/api/Kern/Injektor. Abgesehen davon können Sie die Methode auf eine "Eingabe" Ihrer 'HeaderNavComponent' verweisen, die als" Link "zwischen Eltern und Kind fungiert. Alternativ können Sie auf das gesamte "this" der übergeordneten Komponente verweisen und es als Eingabe für die untergeordnete Komponente verwenden. Keine dieser letzten Lösungen sollte jedoch eine gute Praxis sein, also würde ich mich persönlich an den Injector halten. Bitte überprüfe das auch: https://github.com/angular/angular/issues/10448 (check sod's post). Außerdem können Sie ViewContainerRef verwenden – briosheje

Antwort

0

Sie können tun, dass @Output Typen Variable in Ihrem Kind HeaderNavComponent Komponente und Blase und Ereignisse durch die Definition, wenn Sie fromt er Kind wollen, das von der übergeordneten Komponente aufgenommen wird ThemeComponent und Feuer einer Methode qrIconClicked()

So Ihr Kind Komponente aussehen wird

export class HeaderNavComponent { 
    @Output() editDone = new EventEmitter<EditEvent>(); 

    onSubmit() { 
    if (some condition) { 
     this.editDone.emit('some value'); 
    } else { 
     this.editDone.emit('other value'); 
    } 
    } 
} 

wie Sie editDone Ereignis von Ihrem Kind Komponente erhöhen, während Ihr Kind Komponente ruft Sie eine Funktion zuweisen können anrufen, wenn das Ereignis wird emmitted werden.

<header-nav(editDone)="qrIconClicked($event)"><header-nav> 

Und schließlich arbeiten Sie Wert von Kind im Falle Eltern übergeben bekommen

qrIconClicked(event: any){ 
    //event will hold value from chilld 
    } 
Verwandte Themen