这是一个可以玩的笨蛋:
https://plnkr.co/edit/qTjftING3Hk2fwN36bQa?p=preview
一切正常,除非您手动更改 url bar 中的 id 参数,因为项目下拉菜单不会将新的 projectId 显示为当前项目。当用户将 url 保存为收藏链接并将其复制/粘贴到 url 栏中时,就会发生这种情况!我会说一个常见的情况!
为了解决这个问题,我可以监听 route.params 中的更改,TestsListComponent
并添加一个检查sharedService/EventEmitter
更改的 id 是否存在于该下拉列表中。TestsListComponent 中的布尔返回值 existsProjectId 决定我是否应该重定向到/projects
页面,因为 id 不存在。
但老实说,TestsListComponent
至少从用户体验的角度来看,从 重定向为时已晚,因为route projects/:id/tests
已经激活。
你将如何纠正这种不当行为?
附言
也许有一种全局参数更改我可以收听并检查 ProjectsListComponent 中的路径及其 ID,这会有所帮助!
如果有人知道如何在窗口模式下编辑 plunkr 的 url 栏以测试不一致,请告诉我你是如何使只读 url 栏可编辑的......即使将 url 复制到新选项卡中也不起作用,因为我得到了plunkr 未找到错误... => ANSWER
- 加载 plunkr 并激活窗口模式
- 在窗口模式下,将 url 复制/粘贴到新选项卡中
- 当这是粘贴的网址时:https ://run.plnkr.co/LhwcQjzWHsRUda8H/projects/1/schoolclasses
- 让它成为那个网址: https ://run.plnkr.co/LhwcQjzWHsRUda8H/#/projects/1/schoolclasses
- 并更改参数: https ://run.plnkr.co/LhwcQjzWHsRUda8H/#/projects/2/schoolclasses
- 如果你不添加哈希,那么你会得到一个未找到的 404。