使用 activatedRoute 访问 Angular 中的编码查询参数
Accessing encoded query params in Angular using activatedRoute
我有 angular 应用程序是在从另一个应用程序重定向后加载的。我想在身份验证网站 returns 到我的 Angular 应用程序时访问查询参数。 url 看起来像
我想访问查询参数,但我无法使用 this.activatedRoute.snapshot.queryParams
正确执行此操作
我怀疑这是由于编码参数造成的。有什么解决方法吗?
此致,
温基
我使用以下代码解码了 URL。然后我可以正确提取参数
const encodedUrl = 'http://localhost:4200/#/starterview?openId%3Dhttps:%2F%2Fmy.fidesque.net%2Fopenid%2Fyobtest_smeuser%26email%3Dyobtest@gml.nl%26userAuthMode%3DSP='
const decodedUrl = decodeURIComponent(encodedUrl);
console.log(decodedUrl);
您可以使用 decodeURIComponent 解码编码的 URL,如 Venky 所回答。如果您知道查询参数并想从解码的 URL 中提取值。使用此功能:
getQueryParamFromMalformedURL(name) {
const results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(decodeURIComponent(this.router.url)); // or window.location.href
if (!results) {
return 0;
}
return results[1] || 0;
}
如果url是http://localhost:4200/login?username=jerry&code=1234,那么
this.getQueryParamFromMalformedURL('username'); // should return 'jerry'
我有 angular 应用程序是在从另一个应用程序重定向后加载的。我想在身份验证网站 returns 到我的 Angular 应用程序时访问查询参数。 url 看起来像
我想访问查询参数,但我无法使用 this.activatedRoute.snapshot.queryParams
正确执行此操作
我怀疑这是由于编码参数造成的。有什么解决方法吗?
此致, 温基
我使用以下代码解码了 URL。然后我可以正确提取参数
const encodedUrl = 'http://localhost:4200/#/starterview?openId%3Dhttps:%2F%2Fmy.fidesque.net%2Fopenid%2Fyobtest_smeuser%26email%3Dyobtest@gml.nl%26userAuthMode%3DSP='
const decodedUrl = decodeURIComponent(encodedUrl);
console.log(decodedUrl);
您可以使用 decodeURIComponent 解码编码的 URL,如 Venky 所回答。如果您知道查询参数并想从解码的 URL 中提取值。使用此功能:
getQueryParamFromMalformedURL(name) {
const results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(decodeURIComponent(this.router.url)); // or window.location.href
if (!results) {
return 0;
}
return results[1] || 0;
}
如果url是http://localhost:4200/login?username=jerry&code=1234,那么
this.getQueryParamFromMalformedURL('username'); // should return 'jerry'