Angular 角度路由器-子路由的空数据对象

Angular 角度路由器-子路由的空数据对象,angular,angular-router,Angular,Angular Router,我的角度路由器需要为父和子路由使用相同的组件,但传递数据以区分父路由和子路由 当前问题:子路由未注册来自子路由的任何数据 定义关系的路由模块段: 在角度分量中: 当前行为: 点击路由“…/父路径/某些id” 正常预期行为,无数据存在 点击路由“…/父路径/某些id/子路径” 意外行为,数据仍然为空 注意:我还尝试在父级添加数据,这两个路由都会注册。对盎格鲁语来说比较陌生,所以任何帮助都将不胜感激。提前谢谢 angular的路由器本质上是一个带有父节点和子节点的树结构,数据在树中的节点上定

我的角度路由器需要为父和子路由使用相同的组件,但传递数据以区分父路由和子路由

当前问题:子路由未注册来自子路由的任何数据

定义关系的路由模块段:

在角度分量中:

当前行为:

点击路由“…/父路径/某些id”

  • 正常预期行为,无数据存在
点击路由“…/父路径/某些id/子路径”

  • 意外行为,数据仍然为空

注意:我还尝试在父级添加数据,这两个路由都会注册。对盎格鲁语来说比较陌生,所以任何帮助都将不胜感激。提前谢谢

angular的路由器本质上是一个带有父节点和子节点的树结构,数据在树中的节点上定义,数据对象存在于定义它们的特定节点上。因此,父路由不会在其自身的“数据”中看到子路由数据,子路由也不会直接看到其父“数据”。但您可以根据需要从激活的路由访问父/子路由

this.route.parent.data.subscribe(pd => console.log(pd, 'parent data'));


下面是一个stackblitz演示行为:

您可以构建一个简单的blitz来演示您的问题吗?这可以帮助我们更好地理解什么对你不起作用。Thx.我看到在路由中使用了两次MyComponent,对吗?另外,您是否尝试过使用
this.activatedRoute.snapshot.data
?是的,父路由和子路由应该呈现相同的组件。我发现activatedRoute返回的是父节点,而不是子路由上的子节点。我不得不使用
this.route.children…
,但我仍然很难理解为什么在这种情况下ActiveDurote会返回父节点?不确定您是否清楚@bryan60注入组件的激活路由是路由器树中定义路由的节点处的激活路由。因此,父路由上的组件在父节点获取路由,而子节点在子节点获取路由
constructor(
      //...
      private readonly activatedRoute: ActivatedRoute,
      //...
) {}

ngOnInit() {
   this.activatedRoute.data.subscribe(data => {
      console.log('data', data);  // This prints and empty object //

      /* ... do something with data */
   });
}
this.route.parent.data.subscribe(pd => console.log(pd, 'parent data'));
this.route.children.forEach(c => c.data.subscribe(cd => console.log(cd, 'child data'));