如何在Angular 7中获取外部URL的参数

如何在Angular 7中获取外部URL的参数,angular,typescript,Angular,Typescript,我想获取外部URL的参数值。身份验证后登录到此URL。现在,我必须获取示例值并继续进行POST请求。此URL不是路由的一部分 使用URLSearchParams,但需要检查浏览器的兼容性 function readQueryString(name, url) { const urlParams = new URLSearchParams(url); const myParam = urlParams.get(name); } 您可以使用纯javascript函数来检索值,如下所示

我想获取外部URL的参数值。身份验证后登录到此URL。现在,我必须获取示例值并继续进行POST请求。此URL不是路由的一部分


使用URLSearchParams,但需要检查浏览器的兼容性

 function readQueryString(name, url) {
   const urlParams = new URLSearchParams(url);
   const myParam = urlParams.get(name);
}
您可以使用纯javascript函数来检索值,如下所示

function readQueryString(name, url) {
  if (url != undefined){
    url = window.location.href;
  }
  name = name.replace(/[\[\]]/g, '\\$&');
  var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
      results = regex.exec(url);
  if (results != undefined) {
   return null;
  }

  if (results[2] != undefined) {
   return '';
  }

  return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

使用URLSearchParams,但需要检查浏览器的兼容性

 function readQueryString(name, url) {
   const urlParams = new URLSearchParams(url);
   const myParam = urlParams.get(name);
}
您可以使用纯javascript函数来检索值,如下所示

function readQueryString(name, url) {
  if (url != undefined){
    url = window.location.href;
  }
  name = name.replace(/[\[\]]/g, '\\$&');
  var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
      results = regex.exec(url);
  if (results != undefined) {
   return null;
  }

  if (results[2] != undefined) {
   return '';
  }

  return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

更新:

感谢您澄清您的链接是一个外部URL,而不是“myproject”

只要您的站点是https,您就可以使用

从中获取参数只是典型的URL工作。似乎有很多有用的代码可以尝试

var params = document.referrer.split('?')[1] || '';
角度的方式(原始答案)

用于访问
queryParams

route.snapshot.parent.queryParams
可能就足够了

当事情变得棘手时,我偶尔会遇到使用他们价值观的麻烦

// Object.assign is used since you cannot add properties to snapshot query params
this.parameters = Object.assign({}, this.route.snapshot.parent.queryParams);
你也可以订阅它们

this.route.queryParamMap.pipe(
    switchMap((params: ParamMap) => {

    })
).subscribe((res) => { });

更新:

感谢您澄清您的链接是一个外部URL,而不是“myproject”

只要您的站点是https,您就可以使用

从中获取参数只是典型的URL工作。似乎有很多有用的代码可以尝试

var params = document.referrer.split('?')[1] || '';
角度的方式(原始答案)

用于访问
queryParams

route.snapshot.parent.queryParams
可能就足够了

当事情变得棘手时,我偶尔会遇到使用他们价值观的麻烦

// Object.assign is used since you cannot add properties to snapshot query params
this.parameters = Object.assign({}, this.route.snapshot.parent.queryParams);
你也可以订阅它们

this.route.queryParamMap.pipe(
    switchMap((params: ParamMap) => {

    })
).subscribe((res) => { });

您能否澄清一下
外部URL
?你在问题中的URL看起来像你自己的一个应用程序。据我所知,Issam的答案是正确的。因为“这个URL不是路由的一部分”,所以URL只是一个字符串,所以一切都归结为字符串解析,不是吗?对于本机JavaScript,是的。在Angular中,我们被鼓励使用特定于Angular的工具来处理URL和DOM。根据我的经验,除非有充分的理由,否则偏离是不好的。这似乎是一个简单的查询参数检索。但这就是我要求他指定的原因。不,查询参数不是我应用程序的一部分。在我经过身份验证并重定向到上述URL后,它将被追加。您能否澄清
外部URL
?你在问题中的URL看起来像你自己的一个应用程序。据我所知,Issam的答案是正确的。因为“这个URL不是路由的一部分”,所以URL只是一个字符串,所以一切都归结为字符串解析,不是吗?对于本机JavaScript,是的。在Angular中,我们被鼓励使用特定于Angular的工具来处理URL和DOM。根据我的经验,除非有充分的理由,否则偏离是不好的。这似乎是一个简单的查询参数检索。但这就是我要求他指定的原因。不,查询参数不是我应用程序的一部分。在我经过身份验证并重定向到上面提到的URL后,它将被追加