Я использую Angular Маршрутизатор и имею следующие вложенные маршруты:
{
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
? Я попытался подписаться на наблюдаемую в службе, которую совместно используют родительский и дочерний компоненты, но функция, переданная для подписки в child, не вызывается (возможно, потому, что parent запускает наблюдаемое событие до того, как child будет обработан).
Как правильно передать данные дочерним компонентам?