我正在使用Angular Router,并且具有以下嵌套路由:
{
path: 'resource/:id',
component: ResourceComponent,
children: [
{
path: 'general',
component: ResourceGeneralComponent
},
{
path: 'background',
component: ResourceBackgroundComponent
}
]
}
ResourceComponent
从REST-API获取资源,并包含其中呈现了其他组件的<router-outlet>
。子路由组件应显示所获取数据的不同部分。当我使用history.state
单击相应的链接时,可以将数据放入子组件中。但是,这在导航到url/resource/1/general
时不起作用,因为ResourceGeneralComponent
没有来自ResourceComponent
的必需数据。
我正在这样通过链接传递状态中的资源。就像我说的那样,单击链接可以正常工作。
<a routerLink="general" [state]="{resource: resource}" routerLinkActive="active" class="nav-link">General</a>
我如何将资源获取到子组件中,以便不使用history.state
就能正常工作?我尝试订阅父子组件都共享的服务中的可观察对象,但是传递给订阅子对象的函数未调用(可能是因为父对象在呈现子对象之前触发了可观察事件)。
如何正确将数据传递给子组件?
我会考虑使用其中带有Subject或BehaviourSubject作为属性的属性包服务。我已经走过类似的道路,我所做的就是创建了一个带有一些属性的服务。我将属性创建为BehaviourSubject,以便可以订阅它并在发生任何更改时得到通知。