Ich habe zwei Angular2 Komponenten, die Daten über einen Service teilen müssen:Wie erhält man den letzten Wert beim Abonnieren eines Observable?
@Injectable()
export class SearchService {
private searchResultSource = new Subject<string>()
searchResult$ = this.searchResultSource.asObservable()
setSearchResults(_searchResult: string): void {
this.searchResultSource.next(_searchResult)
}
}
Es sei ComponentA
gemacht wird und es gibt ein Ereignis über SearchService.setSearchResults
. Dann navigiert der Benutzer zu ComponentB
, der auch searchResult$
abonniert. ComponentB
wird jedoch niemals das von ComponentA
ausgegebene Ereignis beobachten, da es searchResult$
zur Zeit ComponentA
nicht signiert hatte, da ein Ereignis ausgegeben wurde, da es nicht existierte.
Wie kann ich eine Observable
erstellen, die das letzte Ereignis an jeden neuen Teilnehmer sendet?
Können Sie "Abonnieren als normal" erklären? Gibt es einen Fall, in dem das Abonnement nicht funktioniert? – sabithpocker
Ich meinte, dass ich nicht zeigen muss, wie Sie dieses ReplaySubject abonnieren, da Sie auf der Subskriptionsseite nichts besonderes tun müssen, einfach abonnieren und Sie erhalten den letzten Wert. – tibbus
Okay, cool. Ich hatte eine Situation, in der 'BehaviorSubject' nicht funktioniert, aber' ReplaySubject'. Versuchte zu verstehen warum. – sabithpocker