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

时间:2016-12-26 21:52:02

标签: angular

我正在尝试构建breadcrumb以显示在我的“shell”组件中(<router-outlet>)。我正在注入Angular的Router服务,并将其从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的解析(如果我正确地理解了整个概念)......并且Router甚至还有帮助方法来字符串化{{1} object(从未解释过如何在第一时间检索)...

2 个答案:

答案 0 :(得分:3)

$ ./bin/yfx Enter the value of x: 5 y = f(5) => 6 可以收到router.createUrlTree

ActivatedRoute

答案 1 :(得分:0)

试着期待这个:

this.route.children[0].url.value

它应该是Array containsind具有字段路径的UrlSegmen对象。 一个UrlSegment =一条路径