Gestützt auf die Dokumentation von Angular 2 können Sie Daten von einer Komponente an diese übergeben ein anderer ganz einfach mit dem @Input.
So kann ich zum Beispiel den Eltern so einstellen:
%Vor%Und die Daten in der untergeordneten Komponente erhalten Sie so:
%Vor% Es ist also ziemlich offensichtlich, übergebe die [hero]="data"
an die Vorlage der Elternkomponente (natürlich in der Kindauswahl) und behandle sie in der Kindkomponente.
Aber hier ist das Problem.
Mein DOM-Element für untergeordnete Komponenten (in diesem Fall <hero-child>
) ist nicht in der Vorlage des übergeordneten Elements verfügbar, sondern wird dort in einem <router-outlet>
-Element geladen.
Wie kann ich dann Daten an eine untergeordnete Route Komponente übergeben? Ist die Eingabe nicht der richtige Weg? Ich möchte doppelte, dreifache usw. Aufrufe vermeiden, um die gleichen Daten zu erhalten, die bereits in meiner übergeordneten Route / Komponente enthalten sind.
Ich glaube nicht, dass es eine Möglichkeit gibt, Objekte als Eingabe an eine Komponente zu übergeben, an die sie weitergeleitet wird. Ich habe dies erreicht, indem ich einen Service mit einem Observable verwendet habe, um die Daten zwischen einem Elternteil und einer oder mehreren Kindkomponenten zu teilen.
Im Grunde ruft die übergeordnete Komponente den Dienst auf und schiebt alle erforderlichen Daten dorthin. In meinem Fall ist es nur eine ID, aber es könnte alles sein. Der Service kann dann etwas mit diesen Daten machen (oder nicht). In meinem Beispiel rufe ich den Server an, um eine Firma basierend auf der ID zu erhalten, aber wenn Sie bereits das Objekt haben, das Sie brauchen, wird dieses nicht benötigt. Dann schiebt es ein Objekt in einen Observable-Stream, der in der Kindkomponente abonniert ist.
Übergeordnete Komponente:
%Vor%Service:
%Vor%Untergeordnete Komponente
%Vor%Sie können erreichen, was Sie wollen:
Tags und Links angular typescript angular2-template angular2-routing