我有一个清晰的数据网格,其中单击一行将通过从/ organization / overview路由到/ organization /:id;打开该项目;
出于UX原因,我想在导航之前将最后单击的ID存储为queryParam。
例如
这个想法是,当用户单击浏览器后退按钮时,最后单击的项目将突出显示。我确实知道可以很容易地实现此行为,但是这种方法正是我感兴趣的。 下面是我到目前为止拥有的openOrganization方法。
openOrganization(organization){
this.router.navigate([], {
queryParams: { oid: organization.id },
relativeTo: this.activatedRoute
});
this.router.navigate(['/admin/organizations', organization.id]);
}
它不起作用,因为第二个导航调用似乎在完成之前中断或取消了第一个导航。
谢谢!
答案 0 :(得分:0)
您应该订阅您的路由器,并在导航结束时快照当前路线。
例如:
lastUrl: string;
constructor(private _router: Router) {
_router.events.filter(event => event instanceof NavigationEnd).subscribe(e => {
this.lastUrl = e.url;
});
}
然后,lastUrl变量保存您来自的路由。
---编辑
与params相同,如果每个URL上都有特定的params,则可以获取传递的所有params,而不是获取最后一条路径的URL。