Angular2中带有特殊字符“:”的路由

Posted

技术标签:

【中文标题】Angular2中带有特殊字符“:”的路由【英文标题】:Routing with special character " : " in Angular2 【发布时间】:2017-10-15 20:59:24 【问题描述】:

我的网址是这样的 abc.org/books/sort:created/direction:desc abc.org/books/sort:mostviewed/direction:desc

abc.com/books/schools/sort:created/direction:desc abc.com/books/schools/sort:mostviewed/direction:desc

我希望我的排序参数包含“created”或“mostviewed”,但 angular routerLink 将“:”转换为“%3A”,我的链接变为

abc.org/books/sort%3Acreated/direction%3Adesc abc.org/books/sort%3Amostviewed/direction%3Adesc

abc.com/books/schools/sort%3Acreated/direction%3Adesc abc.com/books/schools/sort%3Amostviewed/direction%3Adesc

和“created”或“mostviewed”未分配给排序参数。

如何在路由和 routerLink 中转义“:”。

【问题讨论】:

【参考方案1】:

https://github.com/angular/angular/issues/4895

你必须像这样扩展 encodeUri

encodeURIComponent(str) 
    return encodeURIComponent(str).replace(/[!'()*]/g, function (c) 
        return '%' + c.charCodeAt(0).toString(16);
    );

【讨论】:

以上是关于Angular2中带有特殊字符“:”的路由的主要内容,如果未能解决你的问题,请参考以下文章

如何选择 ID 中带有特殊字符的元素?

通过存储在 Postgresql 中带有特殊字符的变量名中来删除约束

J2ME Nokia 中带有特殊字符的呼叫号码

使用列名中带有特殊字符的 aes_ 或 aes_string 使用 ggplot 进行编程

JS 将请求载荷中带有特殊字符的数据发送到服务层,我们需要转义吗?

python学习--输出带有特殊字符的字符串