在Angular 2中处理带有多个问号的查询参数

时间:2017-08-15 10:58:40

标签: angular query-parameters

所以基本上我无法通过查询参数获得正确的结果。例如,我们有一个如下所示的查询参数:

Dim states As IHTMLDOMChildrenCollection
Set doc = ie.document
Set states = doc.querySelectorAll("*[class^='state_']")

If (Not states Is Nothing) Then
   Dim i
   For i = 0 To states.Length - 1
    Debug.Print states(i).innerHTML
   Next i
End If    

返回的结果只是 zxcvbnm ,第二个问号和所有后续字符都被省略。

我已经尝试过这个:

?encryptedId=zxcvbnm?:112233

和此:

this.businessId = this.router.parseUrl(this.router.url).queryParams["bid"];

但两个代码都返回相同的结果。我想抓住一切。请帮忙。谢谢!

1 个答案:

答案 0 :(得分:2)

在使用encodeURIComponent

传递到网址之前,您需要对其进行编码

可以在浏览器控制台上尝试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'];
    }
}