2015-09-21 8 views
6

Ich habe eine Anwendung, die drei Komponenten enthält. Anwendung, EditView, Dialog.Angular 2 Kindkomponente bezieht sich auf Elternkomponente

Anwendungskomponenten enthalten EditView-Komponenten, die viele andere EditView-Komponenten und eine Dialog-Komponente enthalten können (wenn die Dialogkomponente auf einer Seite sichtbar ist).

Die Dialogkomponente enthält die Anwendungskomponente. Wenn ich, dass in Erklärung Pfad in Dialogkomponente setzen:

directives:[Application] 

Ich bin diesen Fehler:

Unexpected Richtlinie Wert 'undefined' auf die Ansicht der Komponente

'Dialog' Ist es möglich, überhaupt eine solche Struktur zu haben, in der die Kindkomponente Komponenten von der oberen Ebene bezüglich einiger Bedingungen enthalten kann?

Wenn ich Application-Komponente aus Dialog oder durch andere Komponenten ersetzen, funktioniert es einwandfrei.

zlaja

+0

Dies ist die Diskussion von Google Angular Gruppe: https://groups.google.com/forum/#!topic/angular/tDU5sw1vBwc – zlaja

Antwort

3

Putting es in der Liste Richtlinien wird nicht funktionieren, aber Sie können immer noch Zugriff auf die übergeordnete Komponente haben, indem sie in den Konstruktor des Kindes Richtlinie injiziert mit:

constructor(@Host(Application) application: Application) { 

} 

Und die übergeordnete Komponente kann eine Live-Liste der untergeordneten Komponenten erhalten mit @Query:

constructor(@Query(EditView) editViews: QueryList<EditView>){ 

} 
+0

Justo clerify. Ich möchte eine neue Anwendungsinstanz in der Dialog-Komponente haben. Anwendung -> EditView -> Dialog -> Anwendung (das ist neue Instanz). – zlaja

+0

Mit forwardRef habe ich verwaltet Dialog Komponente kann Anwendung Komponente in Richtlinien sehen, ich habe es im Debug-Modus überprüft. Jetzt bekomme ich diesen Fehler: Unbedingter Komponentenzyklus in der Anwendung. Siehe https://groups.google.com/forum/#!topic/angular/tDU5sw1vBwc. – zlaja