2016-11-17 3 views
1

So jetzt habe ich eine eingerichtet, dass wie folgt aussieht:Herstellung Komponenten verfügbar zu Verschachtelte Module

  • App-Modul
    • Ein großes Modul
      • Ein weiteres großes Modul
        • A Komponente

A Component haben keinen Zugriff auf die Komponenten in A Large Module geladen, auch wenn diese Komponenten als beide Erklärungen und Exporte von A Large Module definiert sind.

Gibt es eine Möglichkeit, dass ich dem verschachtelten Modul Another Large Module Zugriff auf die Komponente Importe von A Large Module geben kann, so dass seine untergeordneten Komponenten Zugriff auf diese Komponenten haben? Oder müssen diese innerhalb von Another Large Module deklariert werden, damit ihre untergeordneten Komponenten darauf zugreifen können?

Antwort

1

Sie müssen Dinge in das Modul importieren, wenn die darin deklarierten Komponenten diese Dinge verwenden. Sie können ein Feature-Modul erstellen, das Komponentensätze importiert/exportiert/deklariert und in Ihren anderen Modulen verwendet.

- App Module 
    - FeatureA Module 
    - FeatureB Module 
    - Large Module (import FeatureA Module) 
     - Component [can use components from FeatureA; 
        can't use components from FeatureB] 
     - Another Large Module (import FeatureA Module, FeatureB Module) 
      - Component [can use components from FeatureA and FeatureB] 

Wenn Ihr Large Module und Another Large Module faul geladen sind, können Sie FeatureA module in beiden Dateien/packages haben, aber nur wenige zusätzliche Kilobyte wird nicht weh tun. Ein zusätzlicher Vorteil ist, Wiederverwertbarkeit, können Sie Feature-Module in anderen Projekten verwenden:

- Different App Module 
    - FeatureA Module 
    - FeatureB Module 
    - Different Large Module (import FeatureA Module) 
     - Component [can use components from FeatureA; 
        can't use components from FeatureB] 
0

Wenn Sie Anteil Komponenten zwischen den Modulen wollen, ist der einfachste Weg, um ein shared.module.ts zu erstellen:

const SHARED_COMPONENTS = []; 

const SHARED_MODULES = []; 

@NgModule({ 
    declarations: [ 
    ...SHARED_COMPONENTS 
    ], 
    imports: [ 
    ...SHARED_MODULES 
    ], 
    exports: [ 
    ...SHARED_COMPONENTS, 
    ...SHARED_MODULES 
    ] 
}) 
export class SharedModule { } 

Mitteilung der ‚Ausfuhr‘ Schlüssel es Ihnen Ihre SharedModule importieren wo immer Sie es in Ihrer Hierarchie brauchen und nutzen Sie die gemeinsamen Komponenten von überall her.

+0

Sie sagen also, dass ein Modul über dem Niveau des 'A Large Module' in meinem Beispiel müssten alle Module und Komponenten importieren das muss geteilt werden? – StephenRios

+0

Ja. Sie werden wahrscheinlich 'SharedModule' überall in Ihrer App importieren. Aber es ist keine große Sache. Es wird einmal geladen und dann wieder verwendet. – Maxime

+0

Wenn Sie nur wenige importieren möchten, können Sie ein freigegebenes Modul für jeden großen Teil Ihrer App erstellen. Aber es wird meistens in einem großen Durcheinander enden und ich würde dir empfehlen, nur ein gemeinsames Modul zu haben;) – Maxime

Verwandte Themen