在Angular中将字符串作为路由参数传递而不进行编码

时间:2017-07-21 22:03:34

标签: angular angular2-routing

我正在尝试使用以下代码传递字符串:

  this.router.navigate(['/systems', params.toString()]);

然后将route参数附加到API调用的URL。 params.toString()change_user=2258。但是,当它通过浏览器发送时,它会更改为URL上的change_user%3D2558。当我使用开发人员工具查看发送给API的内容时,它已更改为NaN 如何通过路由器传递字符串,以便我可以直接将其附加到我的API字符串?

修改:变量params的类型为URLSearchParams()。 这就是我试图提取参数的方法:

this.route.paramMap.switchMap((params: ParamMap) => 
this.httpService.getSites(+params.get('params')))
.subscribe(sites => this.sites = sites);

2 个答案:

答案 0 :(得分:10)

所以这就是我修复它的方法:

我只需要做的就是在+电话中取出+params.get()。显然,它的作用是尝试将其转换为数字。现在我可以直接传递params.toString()

答案 1 :(得分:3)

使用描述here in the Angular 2 routing documentation

的参数添加路径定义
{ path: 'hero/:id', component: HeroDetailComponent }

选项1

然后,您将能够使用

导航到路线
let id = 2258;
this.router.navigate(['/hero', id]);

使用ActivatedRoute中的@angular/router提取参数here in the documentation

let id = this.route.snapshot.paramMap.get('id');

选项2

使用router.navigateByUrl()方法(documentation here

router.navigateByUrl('/hero/2258');