вот метод из сервиса. key под каждый url свой. есть еще способ как в репо angular-universal. там мудренее но зато можно не повторять запросы которые делал сервер node
getUsersActivity(forceRefresh?:boolean) {
return this.getWithCache (
'user-activity',
'usersActivity$', forceRefresh)
};
getWithCache(url, key, forceRefresh?:boolean):any {
if (!this[key]) {
this[key] = new ReplaySubject(1)
}
// If the Subject was NOT subscribed before OR if forceRefresh is requested
if (!this[key].observers.length || forceRefresh) {
this.get(url).subscribe(
(data) => this[key].next(data),
(error) => {
this[key].error(error);
// Recreate the Observable as after Error we cannot emit data anymore
this[key] = new ReplaySubject(1);
}
);
}
return this[key];
}