Angular 如何在不重新初始化与路由关联的组件的情况下向我的URL添加参数?
我的路由组件中有两条与问题相关的路由:Angular 如何在不重新初始化与路由关联的组件的情况下向我的URL添加参数?,angular,Angular,我的路由组件中有两条与问题相关的路由: { path: 'curation/:documentId/drug-approval/:findingId', component: DrugApprovalComponent }, { path: 'curation/:documentId/drug-approval', component: DrugApprovalComponent } 最初,用户进入第二条路线,填写表单并点击save,此时向后端发出请求,我得到f
{
path: 'curation/:documentId/drug-approval/:findingId',
component: DrugApprovalComponent
}, {
path: 'curation/:documentId/drug-approval',
component: DrugApprovalComponent
}
最初,用户进入第二条路线,填写表单并点击save,此时向后端发出请求,我得到findingId
我想将查找id添加到URL中,这样当用户刷新页面时,他们仍然可以得到相同的表单
只需浏览路径即可重置我的表单,因为该组件已重新调整为斜体:
this.router.navigate[data.findingId],{relativeTo:this.route};
我尝试使用{skipLocationChange:true},但这只会跳过添加新的历史状态,我的组件是reinit
我还尝试了类似问题中建议的location API,但这对我来说似乎有点“黑客”,而且createUrlTree函数没有考虑我的根基url,我不想硬编码,因为它基于构建参数
this.router.createUrlTree
[
“/策展”,
这个.documentId,
"药品审批",,
data.findingId
]
.toString//此项不包含基本url
我还尝试使用RouterUseStrategy,但我显然遗漏了一些东西,因为这不起作用,我已经将其作为提供者添加到我的主模块中
param-change-route-reuse-strategy.ts
导出类paramChangeRouterUseStrategy实现RouterUseStrategy{
应该分离{
返回false;
}
应该附加{
返回false;
}
应重用未来:ActivatedRouteSnapshot,curr:ActivatedRouteSnapshot:布尔值{
如果future.firstChild&&curr.firstChild{
如果future.firstChild.component{
if components forreuse.includeFuture.firstChild.component['name']{
如果future.firstChild.routeConfig.path.includeCurr.firstChild.routeConfig.path{
返回true;
}
}
}
}
返回false;
}
存储{}
取回{
返回未定义;
}
}
这就是我现在的处境。我想我也可以使用location API,但我确信有一种角度的方法,如果可能的话,我想使用它。当您尝试使用Router.navigate时,您可以调用路由组件中的组件集
您可以做以下几件事:
[不推荐]。将组件的状态保存到服务中,或者其他任何内容,并且,如果url没有更改,请立即恢复该状态
[推荐]。只需更改URL,无需触发新组件呈现:
您应该尝试以下方法:
从“@angular/common”导入{Location};
从'@angular/router'导入{ActivatedRoute};
@组件{…}
类WhateverComponent{
建造师
私人场所:场所,
私有激活路由:激活路由,
{}
多辛格达塔{
const url=this
.路由器
.createUrlTree[data.findingId],{relativeTo:this.activatedRoute}
.托斯特林;
this.location.goul;//将浏览器的URL更改为给定URL的规范化版本,并将新项目推送到平台的历史记录中。
//或
//this.location.replaceStateurl;//将浏览器的URL更改为给定URL的规范化版本,并替换平台历史堆栈上的顶部项。
}
}
参考资料:
您是否尝试添加skipLocationChange以导航选项?不确定它是否只跳过添加一个新的历史状态,或者它是否也跳过重新初始化组件。它只跳过添加新的历史状态。我将编辑我的答案以澄清这一点。这是不是因为我希望能够使用路由器而采用的角度。以某种方式、形状或形式导航?此外,您提出的解决方案没有考虑到我的根路径基URL。您可以将其视为一种角度的方式。您没有弄乱DOM,没有使用窗口对象,没有直接使用任何webclient API。我不知道路由器中有任何方法不会调用组件的onInit