我对不同的路由使用相同的组件,但是当我在相同组件的路由之间导航时,URL会发生变化,但页面内容是相同的。
我使用了这个解决方案:
constructor(route:ActivatedRoute) {
route.url.subscribe(val => {
//Code Here
});
}
我现在有了预期的行为,但还有另一个问题: Angular没有在浏览器历史记录中保存以前的URL。
如果流程是:A -> B -> C,其中B和C是相同的组件,如果我在浏览器中单击back按钮,我将导航到A而不是B。
发布于 2019-07-17 08:33:42
之所以会发生这种情况,是因为默认情况下,Angular不会维护该状态。但是,您可以通过以下方式使其执行此操作:
ngOnInit(){
window.history.pushState( {} , 'ComponentName', '/path' );
}
您可以编写一个服务,该服务将在您每次导航到某个组件时推送新状态。一旦您保持状态,然后按back按钮将带您到该组件。
我没有对此进行测试,但它应该可以工作。
发布于 2019-07-17 08:40:39
解决这个问题的一种方法是创建两个新组件,每个组件中只有一个html,即所需组件的选择器。然后,在路由器中,只需将组件定义为两个新组件中的一个,Angular会将它们注册为不同的组件,并修复问题。我以前遇到过这个问题,这是我找到的最简单、最直接的解决方案。
https://stackoverflow.com/questions/57071633
复制