Angular2中的路由器参数

时间:2016-03-17 05:42:30

标签: angular angular2-routing

问题是路由器参数显示在URL中,而我希望我的路由器参数不显示在URL中?

myComponent.ts

@RouteConfig([      
        { path: '/routerOne/:myId', component: routerOne, name: "routerOne",useAsDefault: true},
        { path: '/routerTwo/:myId', component: routerTwo, name: "routerTwo"},

])

myComponent.html

  <a [routerLink]="['routerOne',{myId:this.Id}]">RouterOne</a>
  <a [routerLink]="['routerTwo',{myId:this.Id}]">routerTwo</a>

2 个答案:

答案 0 :(得分:1)

截至目前,sharedService可能是最后一个选项,因为您不想在url中显示数据。 RouteData可以是一个选项,但它是immutable。 请仔细阅读这两个主题。

https://github.com/angular/angular/issues/6672

https://github.com/angular/angular/issues/6569

答案 1 :(得分:0)

如果您想通过路由作为参数发送静态值,那么您可以通过使用此参数在URL2中显示路由的data属性来发送。

基本上有两个选项(据我所知)通过路由发送数据

  • RouteParams (如有问题)
  • 数据(RouteData)(路由时的属性)

RouteParams

现在,当我们使用RouteParams发送数据时,我们必须以这样的方式定义:

{path: '/editUser/:userId', name: 'Edit User', component: UserEditComponent}

<a href="#" [routerLink]="['Edit User',{userId: id}]"

通过使用此方法,我们可以正常发送数据,但所有数据都在URL中可见

数据

当我们不希望在URL路径中显示数据时,我们必须使用angualr2提供的data的{​​{1}}属性通过路由发送数据。通过使用此属性,我们可以在路由配置时将其他数据发送到组件,而不会在URL中显示它。这是这个属性的例子。

@RouteConfig annotation

通过使用它我们可以通过路由发送数据而不显示在URL中。

Plunker - working example of the same

了解更多信息,请阅读此awesome artical