Если вы не хотите сохранять данные в угловом положении, вы можете воспользоваться услугой, в которой вы делаете http-вызов, например,
dataStructure = [];
getDataStructure() {
if (this.dataStructure) {
return this.dataStructure;
}else{
return this.http.get<any>(
this.url + 'values',
{ headers: headers }
).pipe(
tap( data => this.cachedData = data )
);
}
}
тап не будет подписываться, вы подписываетесь как обычно в вашем компоненте, когда данные поступают, тап сохраняет копию в памяти, поэтому следующий вызов возвращает эту копию.
См. Пример в SB (вариант 12): https://stackblitz.com/edit/angular-rb5vmu
вы можете увидеть в журнале, что сначала вызов поступает с сервера, а затем из кеша.