Ich versuche eine gute Möglichkeit zu finden, meine Angular 2 App zu strukturieren. Der Angular 2 Styleguide empfiehlt die Erstellung eines Core-Moduls. Wenn ich es richtig verstehe, besteht das Ziel des Kernmoduls darin, einzelne Klassen und Komponenten zu sammeln und das Wurzelmodul schlank zu halten. Es wird auch geschrieben, dass ich alle von den Assets benötigten Module in das Kernmodul importieren soll.Angular 2 App Struktur/Core Module und Third Party Libraries
Ich bin ein wenig verwirrt, wenn es um Bibliotheken von Drittanbietern geht, die in die Methode forRoot() aufgenommen werden müssen (wie NgBootstrap oder angular2-Benachrichtigungen). Normalerweise sollte die forRoot() -Methode nur im Root-Modul aufgerufen werden. Sollte ich solche Module in das Root-Modul oder in das Core-Modul aufnehmen?
Im folgenden Beispiel muss ich einige Konfiguration für angular2-Benachrichtigungen vornehmen. Um mein Root-Modul schlank zu halten, habe ich SimpleNotifications in das Core-Modul importiert.
- Ist das der richtige Weg? Damit die App funktioniert, musste ich SimpleNotificationsModule.forRoot() im App Module importieren.
- Warum muss ich SimpleNotificationsModule erneut in das Core Module importieren. Sollte es nicht vom App-Modul bereitgestellt werden. Ich dachte, dass dank forRoot() das Core-Modul dieselben importierten Module wie das App-Modul verwendet?
- Sollte ich SimpleNotifications in das Kernmodul importieren, wenn ja? Soll ich dort wirklich die forRoot() Methode aufrufen?
App Modul
...
import {SimpleNotificationsModule} from 'angular2-notifications';
@NgModule({
declarations: [...],
imports: [
BrowserModule,
CoreModule,
NgbModule.forRoot(),
SimpleNotificationsModule.forRoot(),
],
bootstrap: [AppComponent]
})
export class AppModule {}
App Component
...
<notifications></notifications>
Core Module
NotificationsComponent
import {Component, ViewEncapsulation} from '@angular/core';
@Component({
selector: 'notifications',
template: `<simple-notifications [options]="notificationOptions">
</simple-notifications>`,
styleUrls: ['./notifications.component.css'],
encapsulation: ViewEncapsulation.None
})
export class NotificationsComponent {
public notificationOptions = {
position: ['top', 'right'],
timeOut: 5000,
maxStack: 5,
lastOnBottom: true
};
}
Vielen Dank für Ihre Antwort. Wenn ich den Styleguide öffne und mit der Browsersuche nach dem Core-Feature-Modul suche, finde ich eindeutig einen Vorschlag, ein Core- und ein App-Modul zu erstellen. – Trafalgar