繁体   English   中英

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

[英]how to pass RouteData via Router.navigate in angular2

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

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

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

感谢任何指针

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

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

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

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

为了模拟这一点,除了使用JSON.stringify对 JSON 对象进行JSON.stringify并在另一端解析它们之外,我没有看到其他解决方案。

这是一个 plunkr 描述这个: https://plnkr.co/edit/jbl7v5fHQEmf4F8tpXDO?p=preview

希望对你有帮助,蒂埃里

对于 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;
  }); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM