Angular 导航也编码 ?和 = queryParams
Angular navigate also encodes ? and = of the queryParams
在 Angular 中,我导航到一个页面并想给它一个 returnUrl 作为参数。我是这样做的:
this.router.navigate(['/validation'], { queryParams: { returnUrl: state.url }});
但这导致 url 为:
https://myhost/myapp/validation%3FreturnUrl%3D%252FmyUrl
我预期的位置
https://myhost/myapp/validation?returnUrl=%2FmyUrl
当我阅读文档时,URL 应该按照我的预期进行编码:值应该进行编码,但是?完好无损。
编码错误的 URL 导致我的应用无法找到 /validation URL 并将导航发送到 Angulars 404 处理。
知道哪里出了问题吗?
是的,Angular 可能正在编码 URL 组件,但您可以在需要时使用 decodeURIComponent
:
const url = "https://myhost/myapp/validation%3FreturnUrl%3D%252FmyUrl";
const decodeURL = decodeURIComponent(url);
console.log(decodeURL)
下面的代码将为您提供 methods/properties 在 URL 上工作,即 URL.searchParams.get('returnUrl')
const URL = new URL(decodeURL);
console.log(URL);
它将按预期工作并从中获取参数。
在 Angular 中,我导航到一个页面并想给它一个 returnUrl 作为参数。我是这样做的:
this.router.navigate(['/validation'], { queryParams: { returnUrl: state.url }});
但这导致 url 为:
https://myhost/myapp/validation%3FreturnUrl%3D%252FmyUrl
我预期的位置
https://myhost/myapp/validation?returnUrl=%2FmyUrl
当我阅读文档时,URL 应该按照我的预期进行编码:值应该进行编码,但是?完好无损。
编码错误的 URL 导致我的应用无法找到 /validation URL 并将导航发送到 Angulars 404 处理。
知道哪里出了问题吗?
是的,Angular 可能正在编码 URL 组件,但您可以在需要时使用 decodeURIComponent
:
const url = "https://myhost/myapp/validation%3FreturnUrl%3D%252FmyUrl";
const decodeURL = decodeURIComponent(url);
console.log(decodeURL)
下面的代码将为您提供 methods/properties 在 URL 上工作,即 URL.searchParams.get('returnUrl')
const URL = new URL(decodeURL);
console.log(URL);
它将按预期工作并从中获取参数。