处理 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'];
    }
}