【问题标题】:Angular 2 query params from url, not in the address bar来自url的Angular 2查询参数,不在地址栏中
【发布时间】:2017-12-19 22:12:12
【问题描述】:

如何使用 Angular 2 从 url 中获取查询参数,例如 https://www.youtube.com/watch?v=Xnjw0SBKDM0?我知道如何从ActivatedRoute 方法中获取查询参数,但我只需要传递一个字符串,而不是我当前的路由器路由。

【问题讨论】:

  • 您的意思是要获取“watch”参数的值吗?
  • 是的,但一般来说,如果我说 5 个参数,我怎样才能得到这些键值对的字典?
  • 我不认为 Angular 具有将用户定义的字符串解析为参数的本机功能。您可能需要手动拆分?&= 的URL

标签: angular url


【解决方案1】:

看看this answer。这是您需要的方法。

function getJsonFromUrl(hashBased) {
  var query;
  if(hashBased) {
    var pos = location.href.indexOf("?");
    if(pos==-1) return [];
    query = location.href.substr(pos+1);
  } else {
    query = location.search.substr(1);
  }
  var result = {};
  query.split("&").forEach(function(part) {
    if(!part) return;
    part = part.split("+").join(" "); // replace every + with space, regexp-free version
    var eq = part.indexOf("=");
    var key = eq>-1 ? part.substr(0,eq) : part;
    var val = eq>-1 ? decodeURIComponent(part.substr(eq+1)) : "";
    var from = key.indexOf("[");
    if(from==-1) result[decodeURIComponent(key)] = val;
    else {
      var to = key.indexOf("]",from);
      var index = decodeURIComponent(key.substring(from+1,to));
      key = decodeURIComponent(key.substring(0,from));
      if(!result[key]) result[key] = [];
      if(!index) result[key].push(val);
      else result[key][index] = val;
    }
  });
  return result;
}

【讨论】:

  • 我需要从字符串中获取参数,而不是我激活的路线
  • 哦。那并不是真正特定于角度的。不过我可以更新我的答案。
  • 更新了我的答案。查看另一个答案,它应该做你想做的事。我粘贴了相关代码。
  • 太好了,我试试看
猜你喜欢
  • 1970-01-01
  • 2021-02-25
  • 2019-10-27
  • 2018-08-29
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多