加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Angular 2中将ActivatedRoute序列化为字符串?

发布时间:2020-12-17 07:26:13 所属栏目:安全 来源:网络整理
导读:我正在尝试构建breadcrumb以显示在我的“ shell”组件中(一个带有 router-outlet).我正在注入Angular的路由器服务,并通过它从routerState.root遍历其firstChild(或children [0])属性直到null,构建包含当前显示路由的(链接)组件列表.结果是ActivatedRoute对象
我正在尝试构建breadcrumb以显示在我的“ shell”组件中(一个带有< router-outlet>).我正在注入Angular的路由器服务,并通过它从routerState.root遍历其firstChild(或children [0])属性直到null,构建包含当前显示路由的(链接)组件列表.结果是ActivatedRoute对象的链接列表.当我将自定义数据附加到每个定义的路径(例如标题)时,我可以在运行时获取(通过ActivatedRoute.data成员),因此我可以在面包屑中显示项目的名称.

但问题在于链接(网址). ActivatedRoute包含链中特定路径的所有信息,但我找不到将其序列化为单个字符串值的方法,以用作痕迹中的链接.我当然可以手动解析它,但这对于非常重要的事情来说太过分了. ActivatedRoute有url(本身分段),查询参数,矩阵参数等等都在不同的属性中(有些甚至是Observables,不必要地使事情变得复杂)……但是没有单个字符串属性可以提供完整的url(使用params和一切).

顺便提一下,Router服务有serializeUrl()成员,它接受UrlTree类型的参数,并将其转换为字符串.也许有一些方法可以将ActivatedRoute转换为UrlTree,这样我就可以使用Router.serializeUrl()?..

简单地说:如何从ActivatedRoute(或ActivatedRouteSnapshot)对象中获取序列化字符串? (显然我自己没有编写整个解析逻辑).

这似乎是必不可少的事情,因为ActivatedRoute本质上是字符串url的解析表示(如果我正确地理解了这整个概念)……并且路由器甚至还有帮助方法来字符串化UrlTree对象(从未解释过如何检索第一名)…

router.createUrlTree可以接收ActivatedRoute.
@Component({
  selector: "foo"
})
class Foo {
  constructor(router: Router,route: ActivatedRoute) {
    const urlTree = router.createUrlTree(["."],{ relativeTo: route });
    console.log(router.serializeUrl(urlTree));
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读