我想要路由到一个特定的路径,当回按钮将在浏览器中点击。Angular 4 - 当按下后退按钮时如何路由到特定组件?
我正在尝试下面的代码片段。但它会将URL更改为所需的URL,然后路由到以前的实际URL。
constructor(location: PlatformLocation, private router: Router) {
location.onPopState(() => {
router.navigate(['/home']);
});
}
我想要路由到一个特定的路径,当回按钮将在浏览器中点击。Angular 4 - 当按下后退按钮时如何路由到特定组件?
我正在尝试下面的代码片段。但它会将URL更改为所需的URL,然后路由到以前的实际URL。
constructor(location: PlatformLocation, private router: Router) {
location.onPopState(() => {
router.navigate(['/home']);
});
}
我发现了一些不同的方式解决与使用JavaScript。
假设我目前在“/ menu”中,并且当按下后退按钮时我想导航到“/ home”。检查下面的代码片段。
ngOnInit() {
window.history.pushState({} , 'Home', '/home');
window.history.pushState({} , 'Menu', '/menu'); }
在这里,我推两种状态中的window.history内ngOnInit()
。首先,我需要访问网址(/home)
,然后选择当前的网址(/menu)
。
它运行良好,我已经达到了我想要的。
我会建议把听者在顶层,如:
@HostListener('window:popstate', ['$event'])
,做
router.navigate(['/home']);
内。
只是想知道,在这种情况下,如何防止路由器导航? –
同样的问题也在这里。 @PankajParkar正确地指出,它并不妨碍路由器导航。 – aniket7824
你可以使用routerLink
https://angular.io/api/router/RouterLink
<a [routerLink]="['/main']">
<b> < BACK </b>
</a>
问题应该是:为什么我想要改变用户习惯的行为,因为所有设备都有一定的行为。就像你想在google.com上发现,当你刷新你的研究时,它会把你带到你的Gmail页面? – Vega
其实,我想构建一个看起来像一个android应用程序(使用webview)的角度web应用程序。所以我需要明确声明后退按键事件。 – aniket7824
如果你想要一个android应用程序,那么你创建一个android本地应用程序,当你做一个角度应用程序时,它应该看起来像一个可以在移动设备上运行的web应用程序。而已。不要重新发明轮子,也不要混淆用户。 – Vega