Wie erhält man den letzten Wert beim Abonnieren eines Observable?

10

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?

    
kdu 11.05.2016, 22:56
quelle

2 Antworten

19

BehaviorSubject gibt den letzten Wert sofort an neue Abonnenten aus:

%Vor%

ReplaySubject sendet alle vorherigen Ereignisse an neue Abonnenten.

    
Günter Zöchbauer 12.05.2016, 04:42
quelle
6

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

    
tibbus 11.05.2016 23:15
quelle