我正在通过网格页面change上的api调用从服务器调用数据。调用此方法时,我会动态获取所有列的表架构,并在有角度的一侧进行其他工作。
问题是我只需要获取一次此表数据。
我该如何将数据保存在内存中,这样,如果用户在客户端上更改页面,就不必为了获得模式数据而再次访问数据库?
[Route("api/MyRoute/GetData/{Skip}/{Take}")]
[HttpGet]
[AllowAnonymous]
public HttpResponseMessage GetData(string Skip, string Take)
{
try
{
if (Result == null)
{
Result = DynamicSqlQuery(Convert.ToInt32(Skip), Convert.ToInt32(Take));
}
}
答案 0 :(得分:0)
如果您不希望将数据保存在有角度的一侧,则可以在服务中进行例如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
您可以在日志中看到从服务器,然后从缓存中提取了第一个调用。