langsam mit angular 2 in den Griff zu bekommen, aber ich habe zu einem bestimmten Problem zu Sackgasse gekommen.Angular 2 => Benachrichtigen Sie eine Route Komponente eines Ereignisses in der App-Komponente
Wenn Sie diese Anordnung haben;
<parent>
<child/>
</parent>
kann ich das Kind von Änderungen in der übergeordneten benachrichtigen, indem Sie @Input() und lassen es zu Änderungen hören. Ich kann die Eltern über Änderungen in dem unterordneten Element informieren, indem Sie @Output() und EventEmiters verwenden.
Was ich jetzt ansehe, benachrichtigt eine geroutete Komponente (eine Komponente, die dynamisch geladen wird, wenn eine Verknüpfung geklickt wird) über ein bestimmtes Ereignis, das in der Haupt-appComponent passiert. Siehe Beispiel unten;
<app>
<button (click)='addEntity()>Add</button>
<router-outlet></router-outlet>
</app>
Ich mag die Komponente benachrichtigen können, die in die Router-Steckdose geladen wird, dass die Schaltfläche geklickt wurde.
Ein Beispiel für die Verwendung wäre mehrere Funktionen (Helden/Kontakte/Haustiere usw.) jeweils mit einem eigenen Dialog zum Hinzufügen einer Entität. Abhängig von der ausgewählten Route müsste sie die ausgewählte Merkmalskomponente (z. B. ContactComponent) benachrichtigen, um ihre spezifische Detailkomponente/Ansicht/Schablone (z. B. Kontakt-Detail-Komponente) anzuzeigen.
Was ist der beste Weg, dies zu erreichen?
Prost
Es scheint, dass ein gemeinsamer Dienst der einzige Weg ist, dies zu erreichen. Ich habe irgendwo gelesen, dass Dienste keine Ereignisemitter verwenden sollten, was für mich die beste Option wäre, da ich keinen Zustand kommuniziere, sondern eine Absicht, dh addEntity sagt, dass der Benutzer den addEntity-Bildschirm sehen möchte, nicht die Sichtbarkeit von diesem Bildschirm (weil es möglicherweise bereits sichtbar ist). So oder so funktioniert das, es erscheint nur merkwürdig, da es so aussieht, als ob Sie ein Observable abonnieren, dessen Wert sich nie wirklich ändert. – Mark
Dies löste ein Rand-Fall-Problem für mich, dass ich wirklich unsicher war, wie man sonst auf eine ordentliche Weise löst. Vielen Dank. – Sam