В моем приложении у меня есть родительский маршрут с серией дочерних маршрутов:
{
path: 'parent',
component: ParentComponent,
children: [
{ path: 'child1', component: Child1 },
{ path: 'child2', component: Child2 }
]
}
У меня настроен неглобальный сервис (MyService) в качестве поставщика в ParentComponent, который внедряется в оба дочерних компонента.
Теперь я хочу добавить защиту маршрута ко второму дочернему компоненту, задав определение маршрута следующим образом:
{
path: 'parent',
component: ParentComponent,
children: [
{ path: 'child1', component: Child1 },
{ path: 'child2', component: Child2, canActivate: [MyGuard] }
]
}
Как я могу получить доступ к MyService из MyGuard
? Если я попытаюсь ввести его как обычно, я получу ошибку no provider for MyService
.
Я вижу, что охранник маршрута canActivate
может принимать параметр route: ActivatedRouteSnapshot
, и этот параметр имеет свойство component
. Однако это свойство не является экземпляром компонента, оно просто является определением класса для компонента. Я должен сам создать экземпляр компонента?
Как я могу получить доступ к нужной мне услуге?