我正在尝试获取当前的路线,并在更改了标题中的搜索文本框中的ITEMc码之后导航到同一条路线。当我最初来到页面时,父路由是“IAUTH/IAUTHEDIT/1706”,然后用户导航到子路径“/FIN”,用户可以从旁边的导航条中导航到几个其他的路线,这在下面的图像中没有显示。
当我将应用程序标题中的条目代码更改为1853,如图片中所示,URL应该更改为“IAUTH/IAUTHEDIT/1853/信息”,我如何根据浏览器上的当前URL动态地更改浏览器URL路由PARAM?我试图从浏览器URL中找到当前场景中的父进程“iAuth/IAuthDist/”的当前激活路径,这样我就可以导航了。this.router.navigate(['iauth/iauthedit/', 1853];
以下是当前路线:
const itemAuthRoutes: Routes = [
{
path: 'iauthedit/:itemCode',
children: [
{
path: '',
canActivate: [AuthGuard],
//data: { feature: AppFeature.AuthorizedItem },
component: ItemAuthorizationEditComponent,
children: [
{
path: 'info', component: ItemAuthorizationInfoEditComponent
}]
}]
}]
最佳答案
所提供的角的问题在于它的值取决于注入的分量。实际上,当您在组件中注入ActivatedRoute
时,值将不是完整的路由,而是显示组件的路由部分。
这意味着,如果您想在包含“项目代码”输入的组件中检索完整的url,您就不能使用angular api来完成这项工作。因此,我建议您使用本机javascript api解析url,然后使用ActivatedRoute
触发导航。
角度在这一点上有点聪明,它不会重新加载组件,您可以通过使用this.router.navigate
对PARAMs进行更改,然后加载新的数据并通过this.activatedRoute.params.subscribe(...)
属性传递给孩子。
关于angular - Angular -获取当前激活的路线并使用不同的路线参数重新导航到同一页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54409735/