Ho due componenti Angular2 che hanno bisogno di condividere i dati tramite un servizio:Come ottenere l'ultimo valore quando si sottoscrive un Osservabile?
@Injectable()
export class SearchService {
private searchResultSource = new Subject<string>()
searchResult$ = this.searchResultSource.asObservable()
setSearchResults(_searchResult: string): void {
this.searchResultSource.next(_searchResult)
}
}
Supponiamo ComponentA
è resa ed emette un evento tramite SearchService.setSearchResults
. Quindi l'utente passa a ComponentB
, che si abbona anche a searchResult$
. Tuttavia, ComponentB
non osserverà mai l'evento emesso da ComponentA
perché non è stato sottoscritto a searchResult$
al momento ComponentA
emesso un evento, poiché non esisteva.
Come è possibile creare un Observable
che emette l'ultimo evento per ogni nuovo utente?
Puoi spiegare "Iscriviti come normale"? C'è qualche caso in cui l'abbonamento non funziona? – sabithpocker
Intendo dire che non ho bisogno di mostrare come ti iscrivi a questo ReplaySubject, dato che non devi fare nulla di speciale sul lato dell'abbonamento, basta iscriverti e otterrai l'ultimo valore. – tibbus
Ok, va bene. Avevo una situazione in cui la sottotabella "BehaviorSubject" non funzionava ma "ReplaySubject" lo faceva. Stavo cercando di capire perché. – sabithpocker