Angular 2, wie die Variable von der übergeordneten Komponente an den Router-Ausgang übergeben wird

8

Alle Tutorials und Antworten, die ich gefunden habe, zeigen nur, wie man eine Variable von der Elternkomponente zur Kindkomponente übergibt, aber was ist diese Kindkomponente im Routeroutlet und nicht direkt in der Elternvorlage?

z.B.:

Hauptkomponente

%Vor%

In diesem Beispiel enthält die Hauptkomponentenvorlage einen Router-Ausgang, wo die Kindkontaktkomponente gerendert wird. Wie kann ich jedoch einen variablen "num" -Wert in der untergeordneten Komponente in einem Routeroutlet von der Eltern-App-Komponente erhalten? / p>     

Joseph Assem Sobhy 23.02.2016, 12:46
quelle

3 Antworten

3

Ich bin gerade über diese Frage gestolpert, hier habe ich ähnliche Probleme gelöst.

Ich würde einen Service nutzen, um das zu lösen. Dann können alle untergeordneten Elemente und das übergeordnete Element die Eigenschaft festlegen, und die Änderungen werden für alle Abonnenten übernommen. Zuerst würde ich einen Dienst mit einem privaten BehaviorSubject erstellen, der einen öffentlichen Getter und Setter hat, um ReplaySubject einzukapseln und nur Observable zurückzugeben:

%Vor%

Der Grund für die Verwendung von "BehaviorSubject (1)" besteht darin, den Anfangswert auf 1 zu setzen, damit etwas abonniert werden kann.

In den Eltern onInit würde ich den Standardwert der Eigenschaft (num) sehen:

%Vor%

In einer oder mehreren untergeordneten Komponenten ist es möglich, Änderungen zu abonnieren:

%Vor%

Und wenn ein Kind oder ein Elternteil die Eigenschaft aktualisiert:

%Vor%

Alle Abonnenten werden davon erfahren.

    
DNRN 29.12.2016 12:48
quelle
0

Momentan können Sie keine Verbindungen zu Komponenten herstellen, die vom Router hinzugefügt wurden. Verwenden Sie stattdessen einen gemeinsam genutzten Dienst (es gibt eine Unmenge von Beispielen hier auf SO), um Daten von oder zu der hinzugefügten Komponente zu übertragen oder Ereignisse zu abonnieren.

Siehe auch diese Ausgabe Ссылка besonders diesen Kommentar Ссылка

    
Günter Zöchbauer 23.02.2016 12:49
quelle
-1

Wenn Ihre Daten unveränderbar sind, können Sie RouteData verwenden.

%Vor%

Dies kann nützlich sein, um einige Konfigurationsoptionen zu übergeben, die Sie in untergeordneten Routen nicht fest codieren möchten. Wenn Sie jedoch erwarten, dass sich Daten ändern, benötigen Sie eine andere Methode.

    
Sasxa 23.02.2016 19:13
quelle

Tags und Links