Startpunkt
Wie auch jede andere Webseite startet Angular mit einerindex.html-Datei.
src/index.html
<app-root>-Element. Hier beginnt die ganze Magie von Angular. Innerhalb des <body>-Tags dieses Dokuments fügen wir unsere #root-komponente hinzu.
Root-Komponente
Die Root-Komponente ist eine Angular-Komponente. Wir haben diese immer standardmässig.src/app/app.component.ts
selector-Property des @Component-Decorators. Es ist der Tag-Name, welche wir in unserer index.html-Datei genutzt haben. Anhand des Selektors weiss Angular, wie diese Komponente kompliert und an der Stelle in das DOM eingefügt werden muss, an der sich <app-root></app-root>.
Du wirst vielleicht bemerkt haben, dass diese Komponente für ihr Template auf eine andere Datei verweist.
src/app/app.component.html
Damit wir das
<router-outlet>-Tag in unserem Template nutzen können, müssen wir RouterOutlet im app.component.ts importieren und in den imports-Array einfügen.AppComponent) besteht darin, als Container für unsere Anwendung zu dienen. Im Allgemeinen verfügen fast alle Angular-Anwendungen über eine einzige Root-Komponente, innerhalb derer sich weitere Komponenten befinden, die wiederum weitere Komponenten enthalten können, sodass eine Baumstruktur aus verschachtelten Komponenten entsteht:
src/app/app.component.html
Bootstrapping
Wir wissen nun, dass die Root-Komponente zu unsererindex.html-Datei hinzugefügt wurde und als grundlegender Container für den Rest der Anwendung dient. Wir können zusätzliche Komponenten innerhalb der Root-Komponente hinzufügen oder mithilfe des <router-outlet> innerhalb der Root-Komponente zu diesen zusätzlichen Komponenten navigieren.
Aber wir sind hier noch nicht tief genug eingegangen. Wir definieren eine Root-Komponente und verwenden sie in index.html, aber es sind noch weitere Schritte erforderlich, damit dies tatsächlich funktioniert.
src/main.ts
AppComponent als Root-Komponente an, zusammen mit einer appConfig aus einer anderen Datei.
Obwohl wir vielleicht nicht genau wissen, was hier auf der Ebene des Angular-Compilers geschieht, haben wir nun ein vollständiges Bild davon, wie unsere Root-Komponente an die Seite index.html übergeben werden kann.
- Unsere Root-Komponente oder unser Root-Modul wird in
main.tsgebootstrappt. - Durch das Bootstrapping wird die Komponente erstellt und zum DOM hinzugefügt, sodass sie in
index.htmlverwendet werden kann. - Nachdem unsere Root-Komponente gebootstrappt wurde, können wir weitere Komponenten hinzufügen, um unsere Anwendung zu erstellen.
Komponente erstellen
Um eine neue Komponente zu erstellen können wir entweder die CLI nutzen oder wir können die Datei selber anlegen.src/app/home/home.component.ts
- Template
- Logik
Routing
Lass uns hier ein Problem hervorheben und den Sinn von anhand einer weiteren neuen Komponente verdeutlichen. Die erste Komponente sollte als Startseite dienen. Erstellen wir nun eine Seite, die als Einstellungsseite fungieren soll.src/app/settings/settings.component.ts
src/app/app.routes.ts tun.
http://localhost:4200/ (aufgrund unseres Standardpfads) oder http://localhost:4200/home gehen, sehen wir die HomeComponent, und wenn wir zu http://localhost:4200/settings gehen, sehen wir die SettingsComponent.
Komponentenstruktur
Jetzt haben wir zwei „Seiten“- oder „geroutete“ Komponenten (später werden wir diese auch als „intelligente“ Komponenten bezeichnen): die Startseite und die Einstellungsseite. Wir ändern, welche davon angezeigt wird, basierend auf der aktuell aktiven Route. Aber wir haben nicht nur geroutete Komponenten. Wir können zusätzliche Komponenten innerhalb unserer Seiten-/Ansichtskomponenten haben, um unsere Anwendung modularer zu gestalten. Wir könnten einfach die gesamte Vorlage für unsere Startseite innerhalb der HomeComponent selbst definieren, oder wir könnten weitere Komponenten erstellen, die darin verschachtelt sind. Nehmen wir an, wir möchten eineWelcomeComponent, die auf der Startseite einfach die Meldung „Hi, Levin!“ anzeigt.
- Willkommensnachricht
- Startseite
src/app/home/ui/welcome.component.ts
WelcomeComponent innerhalb unserer HomeComponent angezeigt wird. Dies kann beliebig viele Ebenen tief gehen – du kannst auch eine weitere Komponente innerhalb der WelcomeComponent hinzufügen.
Unser vollständiger Komponentenbaum sieht nun in etwa so aus:
- Unsere Root-Komponente hat einen
<router-outlet>in ihrem Template. - Wir haben eine Route eingerichtet, um die
HomeComponentim<router-outlet>anzuzeigen, wenn der Pfad/home(oder/) lautet. - Wir haben unsere
WelcomeComponentzur Vorlage unsererHomeComponenthinzugefügt.