Я предоставляю HTTP-запрос GET через службу, и несколько компонентов используют эти данные (данные профиля для пользователя). Я хотел бы, чтобы первый запрос компонента фактически выполнял HTTP-запрос GET на сервер и кэшировал результаты, чтобы последующие запросы использовали кэшированные данные вместо того, чтобы снова называть сервер.
Вот пример службы, как бы вы рекомендовали реализовать этот уровень кэша с Angular2 и typescript.
import {Inject, Injectable} from 'angular2/core';
import {Http, Headers} from "angular2/http";
import {JsonHeaders} from "./BaseHeaders";
import {ProfileDetails} from "../models/profileDetails";
@Injectable()
export class ProfileService{
myProfileDetails: ProfileDetails = null;
constructor(private http:Http) {
}
getUserProfile(userId:number) {
return this.http.get('/users/' + userId + '/profile/', {
headers: headers
})
.map(response => {
if(response.status==400) {
return "FAILURE";
} else if(response.status == 200) {
this.myProfileDetails = new ProfileDetails(response.json());
return this.myProfileDetails;
}
});
}
}