2016-12-15 1 views
3

Angular 2-Dokument-Status "Module mit gemeinsam genutzten Funktionen müssen von jedem Modul importiert werden, das erwartet, dass es seine Deklarationen verwendet".Warum muss SharedModule in das Root-Modul importiert werden?

Ich frage mich, warum es ist, Shared-Features-Modul in Root-Modul zu importieren. Erhöht es die Codebasis-Komplexität?

Antwort

1

Module sind eine Möglichkeit, Dinge in eckigen zu deklarieren, definiert, was von diesem logischen Block benötigt wird und was von ihm exportiert wird. Wenn Sie Ihre SharedModule nicht in Ihre RootModule importieren, sind die in dieser SharedModule definierten Komponenten/services/pipes/etc nicht verfügbar. Wenn Sie beispielsweise einige integrierte Direktiven (ngIf, ngFor usw.) verwenden möchten, müssen Sie CommonModule (oder BrowserModule) importieren.

Angenommen, Ihre SharedModule definiert eine Komponente: AwesomeComponent mit awesome als Selektor. Wenn Sie diese Komponente in Ihrer RootModule verwenden möchten (und warum sollten Sie nicht, es ist toll?), Müssen Sie das Modul, das es deklariert, importieren, sonst eckig wird beschweren (oder scheitern still), dass es nicht tut Ich kenne dieses <awesome> Tag.

Das Deklarieren mehrerer Module kann nützlich sein, wenn Sie Objekte isolieren möchten. Dadurch können Sie eine eigenständige Bibliothek/einen Teil der Anwendung erstellen, die Sie wiederverwenden können. Wenn du eine neue Anwendung machst und realisierst, dass die tolle Komponente, die du vor Wochen entwickelt hast, perfekt darin passt, wenn es ein eigenes Modul hat, musst du es nur importieren.

Es ermöglicht auch eine einfachere Bündelung. Anstatt das SharedModule in jedes Lazy-Loaded-Module aufzunehmen (Lazy-Loaded-Routen benötigen separate Module), bündeln Sie es/laden es einmal für alle.

Erhöht es die Code-Komplexität? Ja, ein bisschen, aber es hat viele Vorteile.

+0

Vielen Dank für Ihr Feedback. Ich weis das zu schätzen – Albert

0

Module do no erben einander, so dass, obwohl die CharactersModule wird durch die AppModule importiert werden (was die SharedModule bereits importiert) kann die CharactersModule nicht die gemeinsamen Funktionen zugreifen, es sei denn, wir SharedModule importieren. Hier SharedModule ist anderes Modul und CharactersModule ist anderes Modul und wir wollten SharedModule in AppModule und CharactersModule verwenden, so müssen wir SharedModule in beiden importieren.

+0

Danke Devansh. – Albert

+0

herzlich willkommen und jede andere Rückmeldung für mich. @Albeart .. – Devansh

Verwandte Themen