如何在Angular 2中将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)); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- unix – 获取默认/首选文件扩展名
- Bootstrap学习总结笔记(6)-- 基本样式之图片
- angularjs – 在Angular中,有没有理由不用模块声明列出模块
- 分割窗口后,Emacs的shell模式显示过大
- scala – Akka Http – 主机级客户端API Source.queue模式
- 基于CXF webservice(3)高级属性之拦截器(interceptor)
- unix – Linux命令获取当前值java.io.tmpdir
- 在Dockerfile中本地运行Ansible SSH身份验证问题
- webservice编程中的RPCServiceClient类涉及的jar包
- 如果需要发布webservice,则用到的实体bean必须安装标准写法