在基本要求上,我试图实现一个路由,该路由将重定向到另一个路由并向Component添加一个参数。这是一个上传管理。
实际上我们有两条路线:
问题是我还需要保留URL中的GET参数。但是现在,我想只显示URL中显示的路径/文档,而不是/ documents / upload,这可能会让人感到困惑,因为如果我们关闭模式,它就是同一页面。
所以,我的预期结果是转到页面/ documents / upload?foo = var& toto = 1234会重定向到/ documents?foo = var& toto1234并保留一个变量告诉我我需要打开模态的。
我已经创建了我的重定向保护,但似乎我的queryParams没有被保留,即使preserveQueryParams为true也是如此。这是一个问题,还是我错过了什么?
canActivate(): boolean {
this.documentsService._isUploading = true;
this.router.navigate(['documents'], { preserveQueryParams: true });
return true;
}
我的路线定义:
{ path: 'documents', component: DocumentsComponent},
{ path: 'documents/upload', component: DocumentsComponent, canActivate: [UploadRedirectionGuard]}
遇到同样问题的人的最终解决方案:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
this.documentsService._isUploading = true;
this.router.navigate(['documents'], { queryParams: state.root.queryParams });
return true;
}
答案 0 :(得分:1)
我认为你要找的是https://github.com/angular/angular/issues/12664
另见Angular2 router keep query string
目前我猜你需要使用一种解决方法,比如一个读取查询的守卫并调用this.router.navigate(...)
并在重定向时重新添加查询而不是路由中的声明性redirectTo
。
您可能需要component: MyDummyComponent
代替redirectTo: '...'
还有一些改变工作正在进行中或已经发布(不知道)在这种情况下更加宽容。