angular 11 返回上一页保留页面数据的思考
起因
有这个需要的页面基本是从列表页点击详情或新建编辑页面。在返回需要回到上一次的列表页面,同时保持页面内容不变
例如:在列表已经翻到了第100页,需要修改某一项值(当然可以做一个弹窗修改,这里讨论的是有必要新增页面去修改的情况),
这是点进去修改之后返回,发现到了第一页,这就麻烦了,再放到第100页就需要浪费时间了。
解决方案
- 接受分页参数
 
这时可能想到在网址上加一个可接受的分页属性。
但是这也要手动去输入。
如果还有其他查询参数呢?难道还一个个去输入,这也麻烦。
第一版
/list?page=1
private route: ActivatedRoute
this.route.queryParams.subscribe(params => {
    this.goPage(params.page || 1);
});
第二版
/list?page=1&keywords=
private route: ActivatedRoute
this.route.queryParams.subscribe(params => {
    this.goPage(params);
});
缺点
不灵活
- 直接使用 
localStorage保存页面数据 
如果所有的列表页面都使用一个值。这样就会发现页面之间会混乱。
例如:
/list
访问到了第10页,在访问其他页面
/list2
发现一进去也到了第10页。
那就分开保存,但是 localStorage 是由存储限制的,页面一多。就会发现localStorage存满了,
缺点
不优雅,会受限制
- 使用浏览器的网址历史功能
 
每访问一页就进行保存历史。
/**
 * 遍历对象属性或数组
 */...剩余内容已隐藏