2015-10-23 15 views
6

Ich versuche derzeit, einen Angular2-Prototyp (basierend auf alpha44) unserer Angular1-App (ziemlich komplex) zu bauen, und ich versuche, die besten Modelle/Daten zu finden Architektur bei der Verwendung von Routen und Kinderrouten.Wie injiziert man Daten in Angular2-Komponente von einem Router

In meinem Beispiel möchte ich von einer untergeordneten Komponente, die aus einer Route erstellt wurde, auf eine Eigenschaft der übergeordneten Komponente zugreifen (die die router-outlet hostet). Wenn Sie eine Komponente aus einer router-outlet erstellen, können Sie @Input und @Output nicht mehr verwenden. Also, was ist die beste Praxis, um einige Daten/Eigenschaften, außer grundlegende routeParams und statische routeData injizieren?

Wie kommunizieren Sie mit der übergeordneten Komponente ohne zu viel Kopplung?

+2

Blick auf [dieser Ausgabe] (https://github.com/angular/angular/issues/4452). AFAIK ist jetzt die einzige Möglichkeit, mit Komponenten von 'Router-Outlet' zu kommunizieren, indem DI verwendet wird. – alexpods

Antwort

2

Sie können RouteData verwenden, um Daten in Routen zu übertragen. Siehe here und here. Ich vermisse immer noch den Teil der Initialisierung dieses Datenobjekts von der Komponente (siehe my question in Bezug auf)

0

Sie können Daten von der untergeordneten Komponente innerhalb des Router-Outlet an die übergeordnete Komponente mit Subject, Observable übergeben. Sie können meine Lösung in diesem video finden.

Siehe den Code auf GitHub: https://github.com/tabvn/angular-blog