Überall wird empfohlen, einen Dienst im Array root AppModule providers zu registrieren und die Verwendung von providers root AppComponent zu vermeiden. Wann sollte jemand einen Dienst in root AppComponent registrieren? Jedes praktische Beispiel. Welchen Vorteil hat die Registrierung des Dienstes im root AppModule im Vergleich zur root AppComponent?Dienst im Stammverzeichnis AppModule oder root AppComponent
Antwort
Bei der Registrierung im Stammverzeichnis wird der bereitgestellte Dienst als Singleton erstellt. Im Gegensatz zur Bereitstellung in der Komponente werden so viele Instanzen erstellt, wie Sie die Komponente verwenden.
Mit anderen Worten:
Der Service auf der Stammebene eingespritzt wird in der gesamten Anwendung zugänglich sein.
Der auf Komponentenebene bereitgestellte Dienst ist nur für diese Komponente und ihre untergeordneten Elemente verfügbar.
Wenn Sie den Dienst in mehrere Komponenten injizieren (@Component({ ...providers: [] ..}
), erhält jeder seine eigene Instanz und ihre untergeordneten Elemente teilen dieselbe Instanz.
Wenn Sie in Root-Ebene injizieren (@NgModule({ ... providers: []}
), werden alle Komponenten die gleiche Instanz teilen.
mehr here
Lesen Sie keinen Dienst in eine Komponente registrieren. Jeder Dienst muss in einem Modul registriert werden.
@NgModule({
imports: [
CommonModule,
etc
],
declarations: [
AppComponent,
Other components and stuff related to this module
],
exports: [
What you want to export if this module is imported by another
],
providers: [
YourService
]
Zum Beispiel habe ich alle meine Dienste in „Coremodule“ und ich importieren nur die Coremodule in AppRoot.
Ich hoffe, mit dieser Antwort zu helfen.
Wir können einen Dienst im Provider-Array einer Komponente registrieren. Du liegst also falsch. –
- 1. Angular 2 Register-Dienst im Root-Modul
- 2. Wordpress installiert im Stammverzeichnis
- 3. Warum existiert der Eintrag ".." im Stammverzeichnis?
- 4. Nginx-Stammverzeichnis
- 5. RegExp - Übereinstimmung von root oder root + 1 Unterverzeichnis
- 6. RouteParams in AppComponent
- 7. Fehler: Keine NgModule Metadaten gefunden für 'AppModule'
- 8. Unexpected Modul ‚CdkTableModule‘ durch das Modul ‚AppModule‘
- 9. GoDaddy Webhosting-Stammverzeichnis
- 10. Kann ich die Matlab-Installationsdatei im Stammverzeichnis des Root-Benutzers löschen
- 11. Geordnete Verzeichnisliste an Stammverzeichnis
- 12. Punkt Unterdomäne zu Ordner im Stammverzeichnis
- 13. Fehler: AppModule ist kein NgModule
- 14. Löschen von XML-Namespace beim Ignorieren des einen im Stammverzeichnis
- 15. Was ist ein Stammverzeichnis?
- 16. Angular 2 - Unerwartete Modul von AppModule
- 17. Laravel Impossible Stammverzeichnis erstellen
- 18. Joomla Installation in Subdir, index.php im root?
- 19. Ist es OK, Code im Stammverzeichnis eines Projekts zu haben?
- 20. Kein Zugriff auf Dateien im Stammverzeichnis
- 21. die Dateien aus Unterverzeichnis im Stammverzeichnis
- 22. So verknüpfen Sie die Datei im Stammverzeichnis
- 23. Concrete5: Seiten im Stammverzeichnis der Website abrufen
- 24. Lesen Sie die version.properties-Datei im Stammverzeichnis
- 25. Git ignorieren Datei nicht richtig im Stammverzeichnis
- 26. Datei erstellen im Stammverzeichnis, seltsame Antwort
- 27. Kein Provider für AppComponent Fehler beim Laden
- 28. Anzahl der Ordner im Stammverzeichnis von ZipFile abrufen
- 29. Linux Distribution mit '/ Daten' im Root-Verzeichnis?
- 30. Angular 2 zum root von CanActivate Dienst
Willst du sagen, dass, wenn man einen Dienst im Array root AppComponent providers registriert, es nicht für die gesamte Anwendung verfügbar sein wird? Wenn nicht, wie macht es einen Unterschied, wenn Sie in root AppModule registriert sind? –
Ja sagte nur das Gegenteil: Der auf der Root-Ebene injiziert wird in der gesamten Anwendung zugänglich sein. – Vega
Ich bin jetzt verwirrt. Wenn ich einen Dienst für root AppComponent anstelle von root AppModule registriere, ist er dann für die gesamte Anwendung verfügbar oder nicht? Bitte klären Sie. –