我正在尝试获取打字稿中的查询参数。 我在做什么错了?
代码:
private getQueryParameters(): any {
let queryParameters = location.search.slice(1),
params = {};
let re = /([^=]*)=([^&]*)&*/g;
queryParameters.replace(re, function (_, key, value) {
params[key] = value;
});
return params;
}
答案 0 :(得分:1)
您错误地调用了replace
,无论如何,为什么要使用replace
?您应该只使用exec
:
while(const match = re.exec(queryParameters)) {
params[match[1]] = match[2];
}
已编辑。这样好多了
答案 1 :(得分:1)
您的代码不想替换npm -v rxjs
中的任何内容。这就是为什么queryParameters
不是最适合使用的方法的原因。
解析String.replace()
的最佳方法在其documentation page中进行了说明:
现代浏览器提供
URLSearchParams
和URL.searchParams
以便于从查询字符串中解析出参数。
您的代码应检查它们是否由浏览器提供并使用。但是,如果它们不可用,可以通过重复调用Regexp.exec()
直到返回location.search
来解析查询字符串,如其文档所述:
null