[英]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,并且路径变量和查询参数都是字符串。 RouterParams
和RouterData
都只支持字符串属性。
为了模拟这一点,除了使用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.