Вы хотите BehaviorSubject, это тип наблюдаемого, который сохраняет последнее испущенное значение.
Посмотрите, как значение все еще доступно до следующего выброса.
Вы можете взглянуть на мою библиотеку ngx-rxcache
https://github.com/adriandavidbrand/ngx-rxcache
Вы можете настроить элемент кэша с помощью функции конструктора, которая возвращает Observable
Вставьте cacheService в ваш конструктор
constructor(private cache: RxCacheService) { }
const cacheItem = this.cache.get({
id: 'Some unique id',
construct: () => this.http.get('Your data endpoint'),
autoload: true
});
autoload: true запустит функцию конструктора при первом обращении к данным, load: true сразу же запустит ее, поэтому данные уже загружены при первом доступе
Вы можете подписаться на обновления с помощью
cacheItem.value$.subscribe(val => { doStuffWithVal(val); });
или просто загляните в кеш, чтобы увидеть последнее значение
doStuffWithVal(cacheItem.value);
Для обновления данных с сервера вы звоните load
this.network.connectionChanged.subscribe(backOnline => {
if (backOnline) this.cacheItem.load();
});
И функция конструктора будет перезапущена.
Вы можете прочитать об этом здесь, если хотите
https://medium.com/@adrianbrand/angular-state-management-with-rxcache-468a865fc3fb