【问题标题】:Angular2: Create route in the controller / componentAngular2:在控制器/组件中创建路由
【发布时间】:2016-07-07 16:31:49
【问题描述】:

在我的路线配置中,我设置了一条带有子项的路线,如下所示:

 {
    path: 'users',
    children: [
        { path: ':id', component: UserDetailsComponent },
        { path: '', component: UserListComponent }
    ]
 }

现在,在我的 UserListComponent 中,我需要动态建立一个指向用户配置文件的链接,具有路径和 id 值....那么我将如何做到这一点,前提是我已成功注入路由器(私有路由器: 路由器)

所以我想做的是

const link = this.router.createUrl('/users', {id:item.id});

我会得到这样的东西

/users/xyse1334

【问题讨论】:

  • 当前路由器没有createUrl() 方法。你用的是什么路由器版本?无论如何,您想将此 URL 用于什么用途,或者您想如何使用它?
  • 我知道它没有...我说了我想要的 ;) 我使用的是最新版本,我想使用与 router.navigate 方法相同的语法...所以:this.router.navigate(['/users', users.id]) 可能......但实际上并没有导航离开,而是喜欢获取生成的 URL,所以我可以将其粘贴到 href .....会在视图中执行此操作,但这是复杂/动态内容创建者的一部分......它有大量需要保留在组件中的业务逻辑
  • 我不明白。为什么要将它粘贴到 href 中?这就是路由器已经为您做的事情。你可以做'/users/${item.id}'
  • 所以,我正在从 json 数据构建一个表......并且列值可能有不同的修饰符(实际上取决于内容类型)......所以如果它是一个数字,它只会显示一个数字,如果它是一个链接,则必须创建一个 A 标记并根据设置添加 href attr ...它非常动态..我无法真正将此逻辑放入每一列的视图中
  • 您可以使用*ngIf 来决定是添加数字还是添加<a routerLink="[...]">

标签: javascript angular router


【解决方案1】:

对于路由参数,只需像路径元素一样传递它们

const link = '/users/${item.id}';

【讨论】:

  • 嗯,这是相当静态的......我需要能够动态传递 queryParams 并且路由器需要自动将其映射到配置的路径...... router.navigate 以这种方式工作跨度>
  • 我不明白问题所在。如果您需要查询参数,为什么不添加?xxx=yyy(或;xxx=yyy 用于矩阵参数)。从动态部分创建字符串有什么过于静态的?
猜你喜欢
  • 2016-07-24
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
相关资源
最近更新 更多