【发布时间】:2018-03-20 15:24:01
【问题描述】:
我一直在对重新加载 Angular 4+ 路由进行一些研究,似乎首选方法是改为侦听组件内的 URL 参数更改并在那里重新初始化组件。
我遇到的问题是在 URL 相同(包括参数)的情况下,试图找到一种 DRY(不要重复自己)方法来跨多个组件进行这项工作。在 AngularJS 中,使用 UI-router 很简单。
用例:
我有一个可以“浮动”在任何路线上方的通知面板,当点击通知时,它需要转到与之相关的内容 - 这可以是许多不同类型的内容。
例如:/posts/:id 或 /groups/:id 或 /users/:id
如果用户已经在查看该内容,则不会重新加载和刷新以反映通知消息。即“John Doe 评论了您的帖子”(用户可能正在查看该帖子的过时版本)或“Jane Doe 接受了您加入某个组的请求”(用户可能正在查看该组的访客视图)。
当检测到路由相同时,我确实考虑过使用 window.location.reload(),并且该方法有效,但它非常不受欢迎,因为它会导致开销(角度重新初始化、身份验证检查、套接字重新连接)等)。
任何建议将不胜感激!
【问题讨论】:
-
您查看过路由器的
onSameUrlNavigation设置吗?默认为ignore,但也有reload选项。不过,我没有这方面的经验。