我在路由到带有查询参数的路由时遇到了问题,我有这样一个函数
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'}
这就是我要传递到路由中queryParams:
部分的内容.导航
当返回对象时,函数应该是这样的
this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);
因此,我成功地路由到所需的路由,但查询参数如下所示..
/page;queryParams=%5Bobject%20Object%5D
我做错什么了吗??
任何帮助都将不胜感激!
EDIT
如果我把函数改成这个
this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);
我得到了相同的url /page;queryParams=%5Bobject%20Object%5D