0

我的应用程序将通过 url 从外部访问,因为我需要在某些实体之间进行识别,所以我需要提供一个 id 参数。该参数也可以不存在。

我的问题是我有一个使用查询参数的请求。当用户与某个元素交互并通过使用 navigationExtras 使用可选参数重定向他时,我看到了很多解决方案。

我试图离开 path: 'login' 并添加查询参数,但它给了我

错误:无法匹配任何路由。URL 段:'login%3Fid%3D1'

矩阵参数也是如此,但loginid之间的字符串不同。

我可以将其用作解决方案,但它会使我复制所有路由,并且它与具有查询参数的请求不匹配。

{
  path: 'login',
  redirectTo: 'login/',
},
{
  path: 'login/:id',
  component: LoginComponent,
},

有什么建议吗?

4

2 回答 2

0

您可以使用子组件执行此操作,具有重定向到登录的根组件和具有重定向到具有 ID 的登录组件的 ID 的兄弟组件

{ path: 'login', children: [ { path: '', redirectTo: 'login/', pathMatch: 'full' }, { path: ':id', component: LoginComponent, } ]

于 2018-04-12T19:48:27.160 回答
0

您在答案中提供的是路线参数。login/:id. 当您尝试访问该:id值时,您将从: 获取它,activatedRoute.snapshot.params['id']它将匹配任何路由:login/123login/234login/someRandomString

另一方面,queryParams附加queryString到 URL 的末尾。login?query1=something&query2=somethingElse. 在这里,query1query2被称为查询参数。

追加queryParams

this.router.navigate(['/login], {queryParams: { query1: 'something', query2: somethingElse }); 或者

<a [routerLink]="['/login']" [queryParams]="{query1: something, query2: somethingElse}">Router Link to Login</a>

于 2018-04-12T19:23:07.027 回答