Angular6 在Angular 6中单击浏览器的后退按钮时,如何避免API调用?

Angular6 在Angular 6中单击浏览器的后退按钮时,如何避免API调用?,angular6,Angular6,例如: “我正在从A页导航到B页。在B页,我单击了浏览器的后退按钮,这将使我返回到A页,但我需要通过单击浏览器的后退按钮来避免对A页的API调用。”如果您指的是“加载A页JavaScript后发送的API调用”,然后,您将希望利用在浏览器中跨页面加载保存信息。要实现这一点,您必须提供逻辑来检查localStorage中的“缓存”信息,然后再调用数据的API。这样,如果用户点击浏览器上的后退按钮,JavaScript将检查localStorage中是否已经有来自API的数据,然后跳过API调用 注

例如:

“我正在从A页导航到B页。在B页,我单击了浏览器的后退按钮,这将使我返回到A页,但我需要通过单击浏览器的后退按钮来避免对A页的API调用。”

如果您指的是“加载A页JavaScript后发送的API调用”,然后,您将希望利用在浏览器中跨页面加载保存信息。要实现这一点,您必须提供逻辑来检查
localStorage
中的“缓存”信息,然后再调用数据的API。这样,如果用户点击浏览器上的后退按钮,JavaScript将检查
localStorage
中是否已经有来自API的数据,然后跳过API调用

注意:如果要清除“缓存”数据,则需要
localStorage.clear()
localStorage.removietem('itemKey')
删除该项。此逻辑将取决于您的用例

例如:

@组件({
选择器:“应用程序英雄列表”,
templateUrl:“./hero list.component.html”
})
导出类HeroListComponent实现OnInit{
构造函数(私有heroService:heroService){}
恩戈尼尼特(){
如果(!window.localStorage.getItem('myData')){
此.heroService.loadData().subscribe(
(数据)=>window.localStorage.setItem('myData',JSON.stringify(数据))
);
}否则{
//通过解析存储的JSON字符串加载数据:
//const data=JSON.parse(window.localStorage.getItem('myData'))
}
}
}

您的页面a和页面b是同一个角度站点的一部分吗?如果是这样,那么您可以将数组作为全局对象存储在服务层中。当您返回到b页时,只需访问该值,如果不为null,则不进行服务调用。另一种选择是如上所述使用本地存储

,但本地存储只会以字符串的形式保存数据!!。就我而言,这是一个阵列,这是真的。这可以与和结合使用,将数据转换为字符串和字符串(以及转换回JS对象)。(补充至答覆)