我有以下路线配置:
{ loadChildren: './public#PublicModule', path: '' },
{ loadChildren: './home#HomeModule', path: 'home' },
{ path: '**', redirectTo: '/404' }
在某个模板中(如果重要,我们称之为 xxx.component.html )我创建了一个按钮,在404路线中进行了一些测试:
<button type="button" routerLink="unknown">Click here for unknown</button>
有了这个,我在路线home/xxx
,按下按钮后,它可以工作,我的意思是它转到404页面,然而,以下内容为我返回:< / p>
NavigationEnd {id: 2, url: "/home/unknown", urlAfterRedirects: "/404"}
但我希望得到 REAL 之前的路线(home/xxx
),而不是我在按钮中设置的网址。有没有办法实现这个目标?
PS1:我尝试使用pairwise
,但只有在拨打404路线2次后才有效。
我的404组件如下:
export class NotFoundErrorComponent {
public previousUrl: string;
constructor(
private router: Router
) {
this.router.events
.filter((event: any) => event instanceof NavigationEnd)
.subscribe((event: any) => {
console.log(event);
// this.previousUrl = event.url;
});
}
...
}
答案 0 :(得分:0)
这是一步一步发生的事情:
/home/xxx
/home/unknown
/404
的路径上,因此它会这样做。/404
并且检查了之前的网址/home/unknown
。我可以想出两种方法可以解决这个问题:
**
,而不是将/404
重定向到**
。您将使用404组件留在/home/unknown
。Location
订阅@angular/router
服务,并跟踪访问过的网址。