我在路由到带有查询参数的路由时遇到了问题,我有这样一个函数

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

推荐答案

可能是因为你放了一个支架,应该是第一个参数,但你把它封装在了整条路由上

Your code:

// This is the end of your route statement:  '}}]);' which the close bracket is included
this.router.navigate([`${link.split('?')[0]}`, { queryParams: {id: 37, username: 'jimmy'}}]);

Update route:

] close括号仅放在第一个参数内,尽量不要放在route语句的最后一部分.

// Update end line: '}});'
this.router.navigate([`${link.split('?')[0]}`], { queryParams: {id: 37, username: 'jimmy'}});

Summary:

this.router.navigate([ url ], { queryParams: { ... } })

Typescript相关问答推荐

如何将函数类型应用到生成器?

替换类型脚本类型中的多个特定字符串

net::BER_RECTION_REUSED和Uncatch使用Axios和TanStack-Query useMutation时未捕获错误(DelivercMutation)

HttpClient中的文本响应类型选项使用什么编码?''

对深度对象键/路径进行适当的智能感知和类型判断,作为函数参数,而不会触发递归类型限制器

Angular 错误NG0303在Angular 项目中使用app.Component.html中的NGFor

参数属性类型定义的REACT-RUTER-DOM中的加载器属性错误

为什么我的一个合成函数不能推断类型?

在对象中将缺省值设置为空值

限制返回联合的TS函数的返回类型

如何将别名添加到vitest配置文件?

打字错误推断

接受字符串或数字的排序函数

在类型脚本中创建显式不安全的私有类成员访问函数

有没有办法在Reaction组件中动态导入打字脚本`type`?

窄SomeType与SomeType[]

TypeScript中的这些条件类型映射方法之间有什么区别?

必须从注入上下文调用Angular ResolveFn-inject()

Typescript 从泛型推断类型

Mongodb TypeError:类继承 events_1.EventEmitter 不是对象或 null