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

how to pass RouteData via Router.navigate in angular2

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

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

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

感谢任何指点

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

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

这里有一个 plunkr 对此进行了描述:https://plnkr.co/edit/jbl7v5fHQEmf4F8tpXDO?p=preview

希望对你有帮助, 蒂埃里

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

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

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

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