【问题标题】:Is there a way to append query/route parameters with routerLink/router.navigate?有没有办法用 routerLink/router.navigate 附加查询/路由参数?
【发布时间】:2016-05-15 19:11:47
【问题描述】:

我正在显示带有搜索和分页的项目列表,并且我希望在其他参数发生变化时保留现有的查询参数。

所以我可以有类似/items?page=3&size=10&title=Hey 和router.navigate('RouteName', { title: 'Hello' }) 的东西只会改变标题,保持页面和大小。

目前在 Angular2 中是否可行?或者,如果没有,我是否可以以某种方式扩展具有此功能的路由器,或者公开一种替代方法,例如“navigateSafely”,以保留参数?然后routerLink 用于模板?

我查看了路由器的源代码,但是......我无法确定它的正面或反面; Instruction 类本身似乎过于复杂。

有人能解释一下吗?

【问题讨论】:

  • 您使用的是哪个 Angular2 版本?自 RC.0 以来有一个新的路由器。您需要明确传递所有参数。如果您想保持一些不变,请获取它们并保持不变。
  • 我尽量保持最新的测试版。
  • 那里也一样,但如果你想要具体的代码,实际版本很重要。我想你需要提供更多细节。 routerLink 的位置不同(在根组件或“任何”组件或当前路由添加的组件中,...)
  • 如果某些参数必须在导航中保持不变(除非用户决定更改),我会考虑在通过依赖注入传递的“config.service”对象中设置这些参数。我希望我已经理解了这个问题。

标签: javascript angular angular2-routing


【解决方案1】:

路由器在导航时没有任何内置方法或设置来保留现有的路由参数。

据我所知,路由器也不容易扩展;它的使用比常规服务更复杂。

如果有任何变化,我会更新这个答案。

这是使用 Underscore 和 RouteParams 的最佳方法:

this._router.navigate([route, _.assign(this._params.params, { page: page })]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 2019-03-29
    • 2016-05-15
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多