角度路线数据树

问题描述 投票:0回答:1

我需要编写一个从routeConfigs获取对象的组件。像那样:

route.routeConfig.data['info']

其中route:ActivatedRoute和路由配置如下:

const routes: Routes =
  [{
    path: 'people', data: { info: 'Parent' },
    children: [
      { path: '', component: Component1, data: { info: 'Child1' } },
      { path: ':id', component: Component1, data: { info: 'Child2' } },
      { path: 'new', component: Component1, data: { info: 'Child3' } }
    ]
  }];

所以我需要一个函数返回一个对象/字符串列表,它们在当前路由和每个父路由的配置数据中。对于上面的值,当我通过路由/people/new将我的组件放入组件时,我必须:["Parent", "Child3"]

请帮助我,威武全部。

angular typescript routing angular2-routing
1个回答
2
投票

您可以通过注入ActivatedRoute然后使用this.activatedRoute.snapshot.data来访问当前激活的Route的数据。但是要访问父级,您需要使用this.activatedRoute.parent.snapshot.data获取当前路由的父级。由于可能有任意数量的父项,因此您可以递归遍历树并获取数据。

为您创建样本stackblitz。在下面添加了必要的代码:

let activatedRoute = this.activatedRoute;
this.data = [];
while (activatedRoute) {
  console.log(activatedRoute.snapshot.data);
  this.data.push(activatedRoute.snapshot.data);
  activatedRoute = activatedRoute.parent;
}

这将使用路径配置数据中的所有值更新this.data变量。您可以根据自己的要求进行修改。

© www.soinside.com 2019 - 2024. All rights reserved.