【发布时间】:2019-03-29 12:56:07
【问题描述】:
我在使用查询参数路由到路由时遇到问题我有这样的功能
goToLink(link) {
this.router.navigate([`${link.split('?')[0]}`, { queryParams: this.sortParams(link)}]);
}
还有这个功能
sortParams(link) {
let queryParams = url.split('?')[1];
let params = queryParams.split('&');
let pair = null;
let data = {};
params.forEach((d) => {
pair = d.split('=');
data[`${pair[0]}`] = pair[1];
});
return data;
}
好吧,所以基本上发生了什么我有一个名为goToLink()的函数,它接受一个url,传递的url是一个带有查询参数的字符串,像这样......
https://website.com/page?id=37&username=jimmy
上面只是一个例子,它不是它实际上的样子,而是一个带有查询参数的链接字符串,所以我从字符串中删除参数并将它们存储在sortParams()函数中的数据对象中所以当我传入上面的字符串时,我得到一个看起来像这样的对象
{id: 37, username: 'jimmy'}
现在这就是我要传递到 router.navigate 中 queryParams: 部分的内容,
返回对象时函数应该是这样的
this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);
所以我成功路由到所需的路由,但查询参数看起来像这样..
/page;queryParams=%5Bobject%20Object%5D
我在这里做错了吗?
任何帮助将不胜感激!
编辑
如果我只是把函数改成这个
this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);
我得到相同的网址/page;queryParams=%5Bobject%20Object%5D
【问题讨论】:
标签: javascript angular typescript angular-router