Ich habe zwei Angular2-Komponenten, die Daten über einen Dienst teilen müssen:
%Vor% Angenommen, ComponentA
wird gerendert und sendet ein Ereignis über SearchService.setSearchResults
. Dann navigiert der Benutzer zu ComponentB
, das auch searchResult$
abonniert. % Co_de% wird jedoch niemals das von ComponentB
ausgegebene Ereignis beobachten, da es zu dem Zeitpunkt, zu dem ComponentA
ein Ereignis ausgegeben hat, nicht zum searchResult$
angemeldet war, da es nicht existierte.
Wie kann ich eine ComponentA
erstellen, die das letzte Ereignis an jeden neuen Abonnenten sendet?
BehaviorSubject
gibt den letzten Wert sofort an neue Abonnenten aus:
ReplaySubject
sendet alle vorherigen Ereignisse an neue Abonnenten.
Sie können den ReplaySubject verwenden, um immer den letzten Wert von zu erhalten der Beobachter, etwa so:
%Vor% Und abonniere es ganz normal.
Ein fortgeschritteneres Beispiel finden Sie hier: Caching Ergebnisse mit angular2 http Service
Tags und Links angular typescript rxjs observable