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

时间:2019-06-25 12:43:48

标签: angular typescript

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

https://testingmyproject/?example=hello

2 个答案:

答案 0 :(得分:0)

更新:

感谢您澄清您的链接https://testingmyproject/?example=hello是一个外部URL,而不是“ myproject”。

只要您的网站是https,就可以使用document.referrer

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

var params = document.referrer.split('?')[1] || '';

角度方式(原始答案)

Angular的ActivatedRoute可以访问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) => { });

答案 1 :(得分:-1)

使用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, ' '));
}