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

Antworten auf die Frage(10)

Ihre Antwort auf die Frage