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