Маршрутизатор используется для отображения компонентов, указанных в адресной строке браузера. Есть несколько способов сохранить прошлые запросы, но для вашего случая использования может быть достаточно службы.
Учитывая предоставленную вами информацию, я сделал некоторые предположения относительно использования вами API и StackBlitz. совместное использование потребовало бы больше работы, чтобы быть полным решением, но вы можете посмотреть на динамическую c услугу «кэширования» здесь: https://stackblitz.com/edit/angular-vhijkx
Я использовал карту хранить ответы на прошлые запросы, но вы также можете использовать отдельные переменные, учитывая вариант использования. Чтобы сохранить «кэш» после загрузки страницы, его можно также упорядочить и поместить в localStorage или sessionStorage.
private cache: Map<string,any[]> = new Map();
getRequest(endpoint: string, termQuery: string): Observable<any> {
const url = `${this.apiBase}/${endpoint}`,
params = new HttpParams().set(this.term, termQuery),
storeId = `${endpoint}:${termQuery}`,
cache = this.cache.get(storeId);
if (cache) {
console.log('fetched from cache');
return of(cache);
} else {
console.log('fetched from API');
return this.http.get(url, {params}).pipe(
tap(response => {
this.cache.set(storeId,response);
})
);
}
}
Этот метод сначала проверяет, существует ли уже кэшированная запись. Если это так, то он немедленно возвращает наблюдаемую информацию, в противном случае он выполняет запрос API, и когда ответ получен, устанавливается кэш и возвращается наблюдаемая.