2017-08-12 43 views
4

我想要路由到一个特定的路径,当按钮将在浏览器中点击。Angular 4 - 当按下后退按钮时如何路由到特定组件?

我正在尝试下面的代码片段。但它会将URL更改为所需的URL,然后路由到以前的实际URL。

constructor(location: PlatformLocation, private router: Router) { 
    location.onPopState(() => { 
     router.navigate(['/home']); 
    }); 
} 
+2

问题应该是:为什么我想要改变用户习惯的行为,因为所有设备都有一定的行为。就像你想在google.com上发现,当你刷新你的研究时,它会把你带到你的Gmail页面? – Vega

+0

其实,我想构建一个看起来像一个android应用程序(使用webview)的角度web应用程序。所以我需要明确声明后退按键事件。 – aniket7824

+0

如果你想要一个android应用程序,那么你创建一个android本地应用程序,当你做一个角度应用程序时,它应该看起来像一个可以在移动设备上运行的web应用程序。而已。不要重新发明轮子,也不要混淆用户。 – Vega

回答

1

我发现了一些不同的方式解决与使用JavaScript。

假设我目前在“/ menu”中,并且当按下后退按钮时我想导航到“/ home”。检查下面的代码片段。

ngOnInit() { 
window.history.pushState({} , 'Home', '/home'); 
window.history.pushState({} , 'Menu', '/menu'); } 

在这里,我推两种状态中的window.history内ngOnInit()。首先,我需要访问网址(/home),然后选择当前的网址(/menu)

它运行良好,我已经达到了我想要的。

0

我会建议把听者在顶层,如:

@HostListener('window:popstate', ['$event']) 

,做

router.navigate(['/home']); 

内。

+0

只是想知道,在这种情况下,如何防止路由器导航? –

+0

同样的问题也在这里。 @PankajParkar正确地指出,它并不妨碍路由器导航。 – aniket7824

相关问题