Ich verwende HTTP-Service von @ angular/http in einem geteilten Modul importiert, ich erweitere den http-Service mit Klassenvererbung. Also hat mein geteiltes Modul einen Dienst namens "AuthHttp", der den http-Dienst erweitert. In meinem Haupt-App-Modul definiere ich Personen-Provider, zur Verfügung stellen: http useClass: AuthHttp. Und in meiner App bei verschiedenen Komponenten injiziere ich den http-Service, ist es möglich oder von Design, dass der Dienst nicht Singleton ist?Angular 2 http-Dienst ist Singleton oder nicht?
Antwort
Wenn Sie den Service in @NgModule({providers: [...]})
der AppModule
oder ein Modul direkt oder indirekt von AppModule
importiert, dann erhalten Sie ein Singleton.
Wenn Sie den Service in einer @Component(...)
bereitstellen, erhalten Sie eine Serviceinstanz pro Komponenteninstanz.
Das ist, was ich tue. Ich hatte jedoch eine seltsame Situation: Ich importiere mein 'AuthenticationModule' in meinem' AppModule'. Und in diesem 'AuthenticationModule' stelle ich meinen' AuthenticationService' bereit (ich brauche das als Singleton, da ich dort mit Member-Variablen arbeite). Allerdings habe ich einen "maximalen Aufruf-Stack überschritten", was ein Zeichen dafür ist, dass ein Service kein Singleton ist. Aber: Wenn ich den Dienst in meinem 'AppModule' anstelle des' AuthenticationModule' zur Verfügung stelle, funktioniert alles wie erwartet. Können Sie bitte hier die Dinge klären? – dave0688
Von diesen Informationen kaum zu unterscheiden. Wenn die Provider nur in '@NgModule()' von ** nicht-lazy-loaded ** Modulen zur Verfügung gestellt werden, gibt es nie mehr als eine einzige Instanz, die von DI erstellt wurde. –
Hm, scheint das der Fall zu sein. Gibt es noch etwas, das Ihnen in den Sinn kommt, was zu einem "maximalen Callstack überschritten" führt? – dave0688
- 1. Angular 2 - Singleton-Dienste?
- 2. Angular 2 Service Singleton Scoping-Probleme
- 3. Angular 2 + typscript oder Angular 2 + Javascript welches ist ratsam
- 4. Knoten, erfordern, Singleton oder nicht Singleton?
- 5. Angular 2 Lazy Loaded Modul - Service nicht Singleton
- 6. Singleton oder nicht
- 7. Dagger 2 Singleton funktioniert nicht
- 8. Angular 2 Lazy Module und geteilte Module Singleton
- 9. Angular 2 Wurffehler: Outlet ist nicht aktiviert
- 10. Wie Singleton Service in Angular 2 und lesen URL Params
- 11. Angular 2 canDeactivate ist nicht immer Routing
- 12. Angular Inline Edit Tabelle Singleton
- 13. Angular 2 "require ist nicht definiert"
- 14. SVG ist nicht geladen mit Angular 2
- 15. jQuery ist nicht für angular definiert 2
- 16. Angular 2 * ngFor nicht
- 17. Angular 2 WebDriver nicht
- 18. Was ist @angular in Angular 2?
- 19. Angular ist auf Ionic 2 nicht mit Winkelmesser 2 definiert.
- 20. Angular 2 HostListener nicht
- 21. Angular 2 Export-Eigenschaft, die Zeichenfolge oder Null ist
- 22. Angular 2: Dynamisches ViewChild oder dynamische Vorlage?
- 23. Manuelle Änderungserkennung in AngularJS oder Angular 2?
- 24. angular 2 bedingt Komponenten ein- oder ausblenden
- 25. Angular 2 funktioniert nicht mit Bootstrap 3 oder 4
- 26. angular 2 erkennen, ob ein RxJS-Timer läuft oder nicht
- 27. Angular 2 - ngOnDestroy nicht ausgelöst
- 28. Angular 2. Garde, die
- 29. Angular 2 Bindung funktioniert nicht
- 30. Methode in Angular 2 ist entweder nicht definiert oder nicht aufrufbar
Das hängt nur von Ihrem Code ab, aber das fehlt in Ihrer Frage, -) –
Eine Instanz des Dienstes wird auf jeder "Ebene" Ihrer App erstellt, die Sie ihm zur Verfügung stellen. Weitere Informationen hier: http://stackoverflow.com/questions/34929665/angularjs-2-multiple-instance-of-service-created und http://stackoverflow.com/questions/34804298/whats-the-best -way-to-inject-one-service-in-anderen-in-eckigen-2-beta/34807397 # 34807397 – Thibs