如何处理角度2中的查询参数

新手上路,请多包涵

在我的 routable component 我有

@RouteConfig {
  {path: '/login',   name: 'Login', component: LoginComponent}
}

但是,如果我转到 app_url/login?token=1234 ,我该如何获取查询参数?

原文由 monty_lennie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 253
2 个回答

为了补充前面两个答案,Angular2 支持路由中的查询参数和路径变量。在 @RouteConfig 定义中,如果您在路径中定义参数,Angular2 将它们作为路径变量处理,如果没有,则作为查询参数处理。

让我们举个例子:

 @RouteConfig([
  { path: '/:id', component: DetailsComponent, name: 'Details'}
])

如果你像这样调用路由器的 navigate 方法:

 this.router.navigate( [
  'Details', { id: 'companyId', param1: 'value1'
}]);

您将拥有以下地址: /companyId?param1=value1 。获取参数的方式对于查询参数和路径变量都是相同的。它们之间的区别是路径变量可以看作是强制参数,而查询参数是可选参数。

希望它能帮助你,蒂埃里

更新: 更改路由器 alpha.31 后,http 查询参数不再有效( Matrix params #2774 )。相反,角度路由器使用所谓的矩阵 URL 表示法。

参考 https://angular.io/docs/ts/latest/guide/router.html#!#optional-route-parameters

可选的路由参数没有用“?”分隔和“&”,因为它们将出现在 URL 查询字符串中。它们之间用分号“;”隔开这是矩阵 URL 表示法——您以前可能没有见过。

原文由 Thierry Templier 发布,翻译遵循 CC BY-SA 3.0 许可协议

RouteParams 现在已被弃用,因此这里是如何在新路由器中执行此操作。

 this.router.navigate(['/login'],{ queryParams: { token:'1234'}})

然后在登录组件中你可以接受参数,

 constructor(private route: ActivatedRoute) {}
ngOnInit() {
    // Capture the token  if available
    this.sessionId = this.route.queryParams['token']

}

是文档

原文由 Jayantha Lal Sirisena 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题