【发布时间】:2017-07-16 04:26:42
【问题描述】:
我的路由配置如下:
{ 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页面,然而,为我返回以下内容:
NavigationEnd {id: 2, url: "/home/unknown", urlAfterRedirects: "/404"}
但我希望获得 REAL 之前的路由 (home/xxx),而不是我在按钮中设置的 URL。有没有办法做到这一点?
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;
});
}
...
}
【问题讨论】:
-
也许使用
NavigationStart事件? -
@Maximus 事件不是问题。我刚刚完全删除了
filter,它并没有返回它来自的真实网址。事实上,恕我直言,在 Angular 中使用路由太复杂了。像采取最后访问的路线这样简单的事情太复杂了。
标签: angular angular-routing angular2-router