Если вы хотите получить такое поведение, вы должны использовать наблюдаемое, что у вас есть, и поделиться им + воспроизвести последнее значение. Хорошо, что для этого есть оператор: shareReplay
.
Важное примечание: определите параметры shareReplay, иначе вы будете воспроизводить бесконечное число значений, и если никто больше не будет слушать наблюдаемое ... все равно останется открытым!
Так что сделайте следующее:
const replayedObs$ = originalObs$.pipe(
shareReplay({ bufferSize: 1, refCount: true })
)
таким образом вы получите только последнее значение при подписке И если никто не слушает replayedObs$
больше он будет закрыт.