如何在 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;
}); }
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;
}); }