2016-10-13 3 views
4

Auf der Angular 2 Style Guide, gibt es eine Empfehlung für eine Verzeichnisstruktur: https://angular.io/docs/ts/latest/guide/style-guide.html#04-06Angular 2 Anwendungsstruktur: Kreismodulabhängigkeiten

Ich denke, im Allgemeinen ist es eine gute Empfehlung, ich auf etwas zu tun, sehr ähnlich mich beabsichtigen würde . Ich bin jedoch auf ein Problem gestoßen, und ich bin neugierig, ob jemand es gelöst hat.

Beachten Sie, dass das Modul heroes ein Verzeichnis shared mit einem heroes-button.component enthält. Vermutlich möchten wir diese Komponente in der gesamten App verwenden (daher "shared").

Ebenso enthält das villains Modul ein shared Verzeichnis mit einer villains-button.component.

Wenn ich die villains-button.component in einem Ort in dem heroes Modul und die heroes-button.component im villains Modul verwenden möge, dann mit einem zirkulären Verweise am Ende werde ich.

Kurz gesagt: Angular erlaubt es mir nicht, ein ModuleA in ModuleB, UND ModuleB in ModuleA zu importieren, aber der Style Guide zeigt das Gegenteil an.

Hat jemand irgendwelche Lösungen für dieses Szenario?

+2

Der Styleguide schlägt vor, dass Komponenten, die von jedem Modul gemeinsam genutzt werden, sich im freigegebenen Verzeichnis befinden und außerhalb davon nicht referenziert werden. Komponenten, die von Modulen gemeinsam genutzt werden, befinden sich in der oberen Ebene Freigegebenes Verzeichnis/app/shared – silentsod

+0

Haben Sie die Lösungen erhalten? Ich bin auf das gleiche Problem gestoßen, wo Modul A in Modul B geladen und Modul B in Modul A geladen wurde. Während des Kompilierens der Anwendung lief der Fehler 'ERROR in Maximale Call-Stack-Größe überschritten'. –

+0

@ParikhVaibhav, ich habe gerade hinzugefügt, wie ich dies für zukünftige Fragesteller unten gelöst. Lass es mich wissen, wenn das hilft. –

Antwort

2

Meine Lösung war, die Komponenten zu verschieben, die mich zwangen, eine zirkuläre Abhängigkeit (in diesem Fall die Schurken-button.component und die Helden-button.component) in das Shared-Modul zu haben.

Am Ende der Verzeichnisstruktur wie folgt aussieht:

HeroesModule 
    -HeroComponentA 
    -HeroComponentB 
VillainsModule 
    -VillainComponentA 
    -VillainComponentB 
SharedModule 
    -HeroButton 
    -Villain Button <-- these two are now available across the application 

Es kann sich nicht richtig an, weil Sie die „Hero“ Button gehört mit anderen Helden Sachen denken, aber im Nachhinein als meine Bewerbung hat, gewachsen Ich bin ziemlich froh, dass Angular Bars zirkuläre Abhängigkeiten zwischen Modulen hat. Das ist ein sehr gefährliches Muster, das unterstützt werden muss, wenn die App wächst.