【问题标题】:angular 2 route parameter角度2路线参数
【发布时间】:2017-03-17 15:42:17
【问题描述】:

1.) 假设在我们的路由模块中,我们有一个这样配置的路径:

{ path: 'version/:version/system/:system/id/:id' }

2.) 在我们导航到的浏览器中:

version/foo/system/bar/id/123

3.) 在我们想要将 URL 更改为的组件中:

version/baz/system/bar/id/123

...版本更改...所有其他参数都相同...

...我们不知道如何通过更改路由器的参数来实现这一点(希望没有字符串替换:D),并感谢任何帮助或输入...

一些附加信息:

this.route.params.subscribe(routeParams => {
  this.routeParams = routeParams;
})

this.routeParams 是这样的

{version: 'foo',system: 'bar',id: '123'}

在我的组件中,我想给版本一个新的值,比如 'baz'

{version: 'baz',system: 'bar',id: '123'}

我知道这会在不创建新对象的情况下引发错误,因为 this.routeParams 是只读的...所以我尝试了不同的方法,例如

this.router.navigate([this.router.url], {version: 'baz',system: 'bar',id: '123'})

我可以使用我拥有的信息轻松创建一个新的 URL 字符串,但也许有一种简单的角度方式我看不到:D

【问题讨论】:

  • 所以您希望它转到您指定的组件,但您希望 url 显示 version/{baz}/ 而不是用户输入的内容?
  • 不确定问题是什么...

标签: angular router angular-component-router


【解决方案1】:

使用您的路由器并导航到当前路由,但使用更改后的参数,例如:

this.router.navigate([MyCurrentRoute, { version: 'baz' }]);

【讨论】:

  • 如果我错了,请纠正我,但这不会导致路线类似于:{MyCurrentRoute};version=baz 而不是替换实际值?但这正是我试图实现的目标......传递实际路线并用新的参数配置对象改变它......
  • 这可能是真的,我只测试了一个路由参数。获取先前的 params 对象并替换版本(如果可用),然后导航到当前路线。我们用它来改变当前语言,这是一个路由参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2019-06-07
  • 1970-01-01
  • 2017-05-04
  • 2018-05-17
相关资源
最近更新 更多