首页 > 解决方案 > Angular 7.2.15,由于后退导航,在导航(popstate)之后访问 RestoredState 数据

问题描述

我想在搜索表单、项目详细信息表单和返回第一个搜索表单(实现浏览返回功能)之间实现导航。我正在尝试保存搜索表单的状态(用户插入的搜索条件)以导航到项目详细信息,最后转到恢复用户最初插入的数据的上一页。我希望使用 Angular 本机路由器功能将数据发送到下一个表单,并在返回上一页后获得 restoreState(Angular 7.2.10 功能)。

我成功地能够使用 Angular 7.2.10 导航状态功能将数据发送到下一个表单,但我无法恢复恢复的状态,因为我不知道从哪里获取数据。我注意到在路由器对象中,我可以在“转换”中看到包含正确 navigationId 和我之前保存的自定义对象的 restoreState 属性,但我不知道如何访问它。

表单之间的导航使用 Angular Router 功能,例如:

this.router.navigate('...', { relativeTo: this.activatedRoute, state: {state: state} });

使用状态将数据发送到下一个表单。这是有效的。在导航之前,我正在使用以下代码保存当前状态(搜索表单状态):

window.history.pushState({navigationId: window.history.state.navigationId, custom: state}, "");

保存当前状态。在下一个表单中,我可以访问由 navigation 调用保存的状态,但是一旦使用 Location 服务返回执行,我不知道如何获取原始数据:

this.location.back();

一旦到达目标表单,我希望在路由器服务的某个地方获得 restoreState 。

标签: angularnavigationangular-ui-router

解决方案


推荐阅读