Wie teile ich Daten zwischen Komponenten in Angular 2?
In Angular 1.x.x fordern Sie einfach denselben Dienst an und erhalten dieselbe Instanz, sodass die Daten im Dienst gemeinsam genutzt werden können.
Now in Angular 2 Ich habe 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, den gleichen Dienst in eine andere Komponente einzufügen, erhalte ich anscheinend eine neue Instanz.
Was mache ich falsch? Ist das Muster selbst falsch (Verwenden eines Dienstes zum Freigeben von Daten) oder muss ich den Dienst als Singleton (innerhalb einer Instanz der App) markieren?
Ich bin auf2.0.0-alpha.27/
btw
Ich injiziere einen Dienst durchappInjector
(edit: nowproviders
) in dem@Component
Annotation und speichern Sie dann eine Referenz im Konstruktor. Es funktioniert lokal in der Komponente - nur nicht komponentenübergreifend (sie nutzen nicht dieselbe Dienstinstanz), wie ich es mir vorgestellt habe.
AKTUALISIERE: Ab Angular 2.0.0 haben wir jetzt @ngModule, wo Sie den Service unter @ definieren würdeproviders
Eigenschaft auf sagte@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#provider