2017-08-29 2 views
2

Ich gewöhne mich an Angular 2, aber ich habe ein paar Fragen bezüglich der app.module.ts Datei.Wozu dient die Datei app.module.ts, was soll ich tun?

  • Warum muss ich die Importe in dieser Datei zu tun, da ich wieder die Eingänge tun wird in der app.components.ts Datei.

Zum Beispiel: Ich mein benutzerdefiniertes Rohr importieren und dann habe ich es wieder in

import { FirstPipePipe } from './first-pipe.pipe'; 

@NgModule({ 
    declarations: [ 
     AppComponent, 
     SecondComponent, 
     ThirdComponent, 
     FirstComponent, 
     FirstPipePipe 
    ], 
    imports: [ 
     BrowserModule, RouterModule.forRoot(appRoutes), HttpModule 
    ], 
    providers: [FetchDataService], 
    bootstrap: [AppComponent] }) 

Dann habe ich die

imports: [ 
      BrowserModule, RouterModule.forRoot(appRoutes), HttpModule 
     ], 
meine app.components.ts-Datei importieren

Warum importiere ich einige Klassen und andere nicht?

Warum sind die Anbieter hier, da wieder, erscheinen sie in den app.component.ts

providers: [FetchDataService] 

Grundsätzlich habe ich alles neu zu schreiben in meinem app.component.ts Datei.

Was ist der Zweck der app.module.ts?

+0

Lese [Vermeiden von gemeinsamen Verwirrungen mit Modulen in Schräg] (https://blog.angularindepth.com/ vermeidende-common-confusions-with-modules-in-eckig-ada070e6891f) –

+1

Ich habe ein YouTube-Video, das hier erklärt: https://www.youtube.com/watch?v=ntJ-P-Cvo7o – DeborahK

+0

@DeborahK tnx für das Video. – masterach

Antwort

2

Module sind eine Möglichkeit, Ihren Code zu organisieren und zu trennen. Sie können mehrere Module haben und einige Module lazy laden.

Sie importieren alle anderen Module in den Abschnitt imports.

Sie deklarieren alle Komponenten in Ihrem declarations. Alle Komponenten, die beim Routing dieses Moduls verwendet werden, müssen in diesem Modul deklariert sein. Wenn Komponenten in einem anderen Modul verwendet werden, werden sie nur in diesem anderen Modul aufgelistet.

Und Sie bieten Ihre Dienste in der providers Abschnitt.

Module helfen auch bei der Steuerung Ihrer Dependency Injection ... Sie können provide Dienste auf Komponentenebene oder auf Modulebene. Durch die Bereitstellung von Diensten auf Modulebene wird eine Instanz des Dienstes erstellt, die im gesamten Modul freigegeben wird. Wenn Sie einen Service auf Komponentenebene bereitstellen, handelt es sich um eine eindeutige Instanz für diese Komponente. Es kann am besten sein, nur einen Service auf einer Ebene bereitzustellen, um Verwechslungen zu vermeiden - entweder auf Modulebene oder auf Komponentenebene (in jeder Komponente, die Sie benötigen). Ich finde, dass es für mich am besten ist, Dienste nur auf Modulebene anzubieten. Das Gleiche gilt für pipes und so, obwohl jede Komponente/jedes Rohr, die Sie herstellen, noch in der declarations deklariert werden muss.

+0

tnx für die globale und lokale Serviceerklärung ... Grundsätzlich werden die Importe und die Deklaration im app.module über das Anwendungsrecht verteilt? – masterach

+0

Warum muss ich meinen Dienst immer noch in meine lokale Komponente importieren, wenn ich ihn in meiner module.ts bereitgestellt habe? – masterach

+1

Sie müssen den Dienst in Ihrer Komponente für den Compiler importieren. Sie müssen den Dienst in der Komponente jedoch nicht "bereitstellen", wenn er im Modul bereitgestellt wird. –

1

Was ist der Zweck der app.module.ts?

  • Ist es Ihre Anwendung beim Start, und die Links zu Ihren anderen Modulen gesetzt.

1 - Module sind die logischen Schichten Ihrer Anwendung. Jedes Modul ist dazu da, Dinge logisch zu packen, so dass es für die Leute einfacher ist, Ihre Anwendung zu verstehen und zu pflegen, die aus mehreren Modulen besteht. Zum Beispiel, wenn Sie eine reiche Anwendung tun, sollten Sie eine Loginmodule, ein AuthenticationModule, etc ...

2- Sie müssen die Dinge in Ihrem Modul importieren, so dass Angular weiß, was Es wird verwendet werden. Grundsätzlich Ihre Loginmodule müssen die Winkel FormModule, die möglicherweise nicht für die AuthenticationModule

3 benötigt werden - Dies führt uns hier: Die AppModule daher nur die anderen sollten es Module importieren verknüpft mit und bieten die Dienste, die benötigt werden global. Ihre Zukunft LoginModule wird nicht benötigt einen Dienst zur Verfügung gestellt werden, aber die AuthenticationModule, die eine AuthenticationService haben wird höchstwahrscheinlich tun.

Dies sind die Grundlagen Konzepte, versuchen Sie die offizielle Dokumentation zu lesen, die viel Wissen über dieses Thema bietet: https://angular.io/guide/ngmodule