In Angular 1.xx fragen Sie einfach nach demselben Dienst und erhalten dieselbe Instanz, sodass Sie die Daten im Dienst gemeinsam nutzen können.
Jetzt in Angular 2 habe ich eine Komponente, die einen Verweis auf meinen Dienst enthält. Ich kann die Daten im Dienst lesen und ändern, was gut ist. Wenn ich versuche, denselben Dienst in eine andere Komponente einzufügen, scheint es, als würde ich eine neue Instanz erhalten.
Was mache ich falsch? Ist das Muster selbst falsch (Verwenden eines Dienstes zum Teilen von Daten) oder muss ich den Dienst als Singleton (innerhalb einer Instanz der App) oder so markieren?
Ich bin 2.0.0-alpha.27/
übrigens auf
Ich füge einen Service durch appInjector
(edit: now providers
) in die @Component
Annotation ein und speichere dann eine Referenz im Konstruktor. Es funktioniert lokal in der Komponente - nur nicht komponentenübergreifend (sie teilen nicht dieselbe Dienstinstanz), wie ich es mir vorgestellt habe.
UPDATE : Ab Angular 2.0.0 haben wir jetzt @ngModule, wo Sie den Service unter der providers
Eigenschaft auf besagten definieren würden @ngModule
. Dadurch wird sichergestellt, dass dieselbe Instanz dieses Dienstes an jede Komponente, jeden Dienst usw. in diesem Modul übergeben wird.
https://angular.io/docs/ts/latest/guide/ngmodule.html#providers
UPDATE : Angular- und FE-Entwicklung im Allgemeinen ist viel passiert. Wie @noririco erwähnt hat, können Sie auch ein Statusverwaltungssystem wie NgRx verwenden: https://ngrx.io/