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
}
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