如何通过angular2中的Router.navigate传递RouteData

时间:2016-01-27 10:31:27

标签: angular angular2-routing

agnular2中是否有api允许传递json对象而不是字符串值。例如。在Router.navigate()我可以传递路由参数

Router.navigate('routename',[{key:stringvalue}])

并可以使用RouteParams.get(key) : string检索它。 但这只返回字符串值。我需要传递json对象。

感谢任何指针

3 个答案:

答案 0 :(得分:7)

另一个有效的解决方案是使用RouterParams的params属性。 这可能不是首选方式,但它有效(从Beta8开始)。

如果您使用Router.navigate(['/myRoute',{someProperty:"SomeValue"}]导航 你可以通过以下方式访问参数:

constructor(routeParams: RouteParams){
  let myPassedData: any = routeParams.params;
  console.log(myPassedData.someProperty); #Prints "SomeValue"
}

答案 1 :(得分:3)

我认为它不是开箱即用的东西,因为路由依赖于URL,路径变量和查询参数都是字符串。 RouterParamsRouterData都只支持字符串属性。

为了模拟这一点,我没有看到其他解决方案,而是使用JSON.stringify编码JSON对象并在另一侧解析它们。

这是一个描述这个问题的傻瓜:https://plnkr.co/edit/jbl7v5fHQEmf4F8tpXDO?p=preview

希望它可以帮到你, 亨利

答案 2 :(得分:0)

对于 Angualr 7,8+:

发送结束:

this.router.navigate(['/targeturl/' , JSON.stringify(inputParameter)]);

接收端:

import {  ActivatedRoute,  Router} ....

 sub;
  ngOnInit() {

this.sub = this.activatedroute.paramMap.subscribe(params => {
  console.log(params);
  debugger;
  }); }