que observables hacer example ejemplo como angular typescript rxjs observable

observables - que es un observable angular



¿Cómo obtener el último valor al suscribirse a un observable? (2)

Tengo dos componentes Angular2 que necesitan compartir datos a través de un servicio:

@Injectable() export class SearchService { private searchResultSource = new Subject<string>() searchResult$ = this.searchResultSource.asObservable() setSearchResults(_searchResult: string): void { this.searchResultSource.next(_searchResult) } }

Supongamos que ComponentA se representa y emite un evento a través de SearchService.setSearchResults . Luego, el usuario navega a ComponentB , que también se suscribe a searchResult$ . Sin embargo, ComponentB nunca observará el evento emitido por ComponentA porque no estaba suscrito a searchResult$ en el momento en que ComponentA emitió un evento, ya que no existía.

¿Cómo puedo crear un Observable que emita el último evento a cada nuevo suscriptor?


Puedes usar ReplaySubject para obtener siempre el último valor del Observer, algo como esto:

@Injectable() export class SearchService { private searchResultSource = new ReplaySubject<string>(1); setSearchResults(_searchResult: string): void { this.searchResultSource.next(_searchResult); } }

Y solo suscríbete como de costumbre.
Puede encontrar un example más avanzado aquí: example


BehaviorSubject emite inmediatamente el último valor a los nuevos suscriptores:

@Injectable() export class SearchService { private searchResultSource = new BehaviorSubject<string>(''''); setSearchResults(_searchResult: string): void { this.searchResultSource.next(_searchResult); } }

ReplaySubject emite todos los eventos anteriores a los nuevos suscriptores.