在URL中,当在Angular中路由时使用`queryParams`时,`%`被'%25'替换

时间:2018-05-26 08:26:10

标签: javascript angular typescript routing angular4-router

我希望在使用Angular中的路由时使用filter: xray;导航到URL。

filter: invert(100%) grayscale(100%);

我想浏览的网址是:

queryParams

但是当我点击搜索时,它会导航我:

<a routerLink='/master' [queryParams]="{query:'%US',mode:'text'}"><li (click)="search()">Search</li></a>

我不知道为什么在http://localhost:4200/master?query=%US&mode=text 符号后附加http://localhost:4200/master?query=%25US&mode=text 。任何人都可以告诉我一种更清晰的方式正确导航。

1 个答案:

答案 0 :(得分:1)

在URL中,百分号具有特殊含义,用于编码特殊字符。例如,=被编码为%3D。

网址中不允许使用某些特殊字符。如果你想在url中使用它们,你必须使用encodeURIComponent javascript函数对它们进行编码。 %25实际上是%字符的编码版本。浏览器在这里对它们进行编码。

尝试从url获取queryParams时,可以使用decodeURIComponent解码它们。

有关详情,请查看:https://support.microsoft.com/en-in/help/969869/certain-special-characters-are-not-allowed-in-the-url-entered-into-the

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent