angular - 使用 History API 存储状态
问题描述
当导航离开我的组件时,我想在浏览器历史状态对象中存储一些状态信息,以便在返回时可以恢复它。我想避免使用服务来存储此信息,因为如果我“新”导航到我的组件,我不想恢复这些属性 - 仅当我使用浏览器后退按钮(或location.back()
)时。
我正在考虑在被导航的组件中做这样的事情:
ngOnDestroy(): void {
let state: any = this.location.getState();
this.location.replaceState("", undefined, { ...state, selectedTabIdx: this.selIdx });
}
以及同一组件中的以下内容:
ngOnInit(): void {
let state = this.location.getState();
if (state.selectedTabIdx !== undefined)
this.selIdx = state.selectedTabIdx;
}
有没有办法做到这一点?上面的代码不起作用(这更像是一厢情愿的练习),因为我进入的状态ngOnInit
不包含 property selectedTabIdx
。
我认为历史状态对象将是存储此信息的理想场所,因为它应该仅用于历史中的这一步,也许您可以在历史中多次使用相同的组件并进行不同的选择等。
解决方案
推荐阅读
- javascript - Reactjs单页应用程序-导航到链接时未加载组件
- kubernetes - kubeadm 无法加入集群
- php - Laravel 密码哈希验证
- regex - Google 表格 IF 声明
- typescript - typescript enum string type Object.keys 数组
- nlp - Spacy,名词短语:如何使用 spacy 定位 doc 中每个 noun_chunk 的名词短语跨度开始和结束标记
- google-cloud-platform - 将大文件的小改动同步到 Cloud Storage
- android - 有没有办法以编程方式使用 kotlin 更改片段中的文本颜色?
- c++ - LNK2005 LNK1169错误c++银行账户代码
- echarts - 在百度 eChart 实例周围设置间距