是否可以仅重定向找不到路由的查询参数?

时间:2019-06-14 13:46:54

标签: angular angular-router

应用程序将收到来自身份验证提供程序的重定向,但URL中没有哈希。

我需要重定向参数 http://host/?param1=123 http://host/#/login?param1=123

如何为此配置路由?

{ path: '', redirectTo: '/login', pathMatch: 'full'},
{ path: 'login', component: LoginComponent },

2 个答案:

答案 0 :(得分:0)

是否必须在路径内完成?

以编程方式,我可以像这样获得参数供参考:

this.parameters = Object.assign({}, this.route.snapshot.parent.queryParams);

现在,您可以使用this.parameters进行重定向,或在navigate queryParams参数中构建它们

this.router.navigate(['/profile/3'], { queryParams: { position: pos, 'salary': 'expensive' } }); // add .then(() => {}) for promise

用于重定向

this.router.navigate(['login'], { preserveQueryParams: true });

模板HTML路由

<a [routerLink]="['/profile/3']" [queryParams]="{position:'boss', 'salary': 'expensive' }">

如果您需要更多,请告诉我,我会为您提供帮助。

答案 1 :(得分:0)

使用当前的角路线配置redirectTo功能是不可能的。

您可以做的是编写一个[CanActivate]保护,将其放在空路由''上,然后在保护内部将用户重定向到/login并使用{{1}保留查询参数}或从警卫队返回Router

例如,在警卫队内部可能看起来像(使用UrlTree):

Router

希望有帮助。