我对Angular 7路由器感到很困惑 . 我想从URL中的任何位置使用get参数“token” .
我使用以下代码来定义几个路由 .
const myRoutes: Routes = [
{ path: 'register/:token', component: RegisterComponent },
// { path: 'register?token=:token', component: RegisterComponent },
// { path: 'register:token', component: RegisterComponent },
{ path: 'register', component: RegisterComponent },
// ...
]
使用第一个定义的路径,我可以使用“register / mytoken " and " register /?token = mytoken”来获取令牌 .
// Token from register/123
this.token = this.route.snapshot.paramMap.get('token')
// Token from register/?token=123
this.route.queryParams.subscribe(params => {
if (params.token != null)
this.token = params.token;
});
任何时候我在浏览器中调用网站时尝试直接提供我的令牌作为get-parameter(“register?token = mytoken "), the router will redirect me to " / register " and I can't get the token with my code above. But when i use " register /?token = mytoken " i will be redirected to " register?token = mytoken”并且可以使用该令牌 .
如何通过“register?token = 123”提供访问页面的路由并检索令牌?
1 回答
感谢@Gilsdav,我应该自己在"clean"项目中对此进行测试 . 我找到了我的同事的一些代码块,它干扰了路由器的get参数:
此重定向剥离get参数 . 我可以通过添加来验证代码的重定向 .