Gegeben import { HttpModule } from '@angular/http';
, die ich in meine Hauptanwendungsmodul (BrowserModule
) importieren, und vorausgesetzt, dass in der Anwendung ich DI Http
Service alle über den Platz, was passiert, wenn:Confusing Angular 2+ Module, Exporte und Dienste - wie mehrere Instanzen von gemeinsamen/wiederverwendbaren Service zu vermeiden
- Ich verwende ein anderes Modul z Ich habe ein Feature-Modul oder ich habe npm Paket heruntergeladen haben, nennen wir es
CoolFeaturesModule
CoolFeaturesModule
selbstHttpModule
und InjizierenHttp
Service
Was importiert, wie ich sie ausarbeiten, wird jedes Modul seine eigene Injektor haben und für jeden Injektor wird ein Http
Service Provider registriert. Als Ergebnis werde ich mehrere Instanzen von Http
Service haben. Ist das korrekt?
Nein, es ist nicht richtig. Dienste sind standardmäßig Singleton. Sobald Sie eine Injektion verwenden, behält DI die gleiche Instanz für die nächste Verwendung bei. – omeralper
Hmm, wie wäre es mit diesem Zitat von: https://medium.com/@cyrilletuzi/how-to-build-and-publish-an-angular-module-7ad19c0b4464 'Am wichtigsten, nicht mischen Komponenten/Direktiven/Rohre und Dienste im selben Modul. Warum? "Und Absätze, die diesem Zitat folgen. – dragonfly
Nun ja, wenn Module Geschwister sind, können sie mehrere Instanzen von injectables erzeugen, da DI den Dienst in der Struktur nicht finden kann. Sie können dafür ein freigegebenes Modul verwenden. Haben Sie ein Modul, das den HTTP-Dienst importiert, und verwenden Sie dieses Modul dann, wenn Sie den Dienst benötigen. Dann wird dieselbe Service-Instanz überall verwendet. – omeralper