处理 Angular 中带有多个问号的查询参数 2
Handling query parameters with multiple question marks in Angular 2
所以基本上我无法使用我的查询参数获得正确的结果。例如,我们有一个如下所示的查询参数:
?encryptedId=zxcvbnm?:112233
returned 结果将只是 zxcvbnm,第二个问号及其所有后续字符都被省略。
我已经试过了:
this.businessId = this.router.parseUrl(this.router.url).queryParams["bid"];
还有这个:
this.activatedRoute.queryParams.subscribe((queryParams: Params) => {
this.businessId = queryParams['id'];
});
但两个代码 return 结果相同。我想捕捉一切。请帮忙。谢谢!
您需要在使用 encodeURIComponent
传递到 URL 之前对其进行编码
可以在您的浏览器控制台上尝试encodeURIComponent('zxcvbnm?:112233')
,您会看到结果。
所以?encryptedId=zxcvbnm?:112233
会变成?encryptedId=zxcvbnm%3F%3A112233
然后从您的组件中,您可以按如下方式检索它。我已经测试过了。
export class QueryParamsComponent implements OnInit {
constructor(
private router: Router,
private route: ActivatedRoute) {
}
ngOnInit() {
let queryParams = this.route.snapshot.queryParams;
const encryptedId = queryParams['encryptedId'];
}
}
所以基本上我无法使用我的查询参数获得正确的结果。例如,我们有一个如下所示的查询参数:
?encryptedId=zxcvbnm?:112233
returned 结果将只是 zxcvbnm,第二个问号及其所有后续字符都被省略。
我已经试过了:
this.businessId = this.router.parseUrl(this.router.url).queryParams["bid"];
还有这个:
this.activatedRoute.queryParams.subscribe((queryParams: Params) => {
this.businessId = queryParams['id'];
});
但两个代码 return 结果相同。我想捕捉一切。请帮忙。谢谢!
您需要在使用 encodeURIComponent
传递到 URL 之前对其进行编码可以在您的浏览器控制台上尝试encodeURIComponent('zxcvbnm?:112233')
,您会看到结果。
所以?encryptedId=zxcvbnm?:112233
会变成?encryptedId=zxcvbnm%3F%3A112233
然后从您的组件中,您可以按如下方式检索它。我已经测试过了。
export class QueryParamsComponent implements OnInit {
constructor(
private router: Router,
private route: ActivatedRoute) {
}
ngOnInit() {
let queryParams = this.route.snapshot.queryParams;
const encryptedId = queryParams['encryptedId'];
}
}