#angular
#angular
Вопрос:
Параметры маршрутизации: paramsInheritanceStrategy: 'always'
Работает на 99%. Параметры и данные из более высоких компонентов передаются в более низкие. Оба доступны в компонентах в активированных параметрах маршрута и данных. Проблема возникает в canActivate. Допустим, у нас есть такая маршрутизация:
path: '/a',
data: {
param1: true
},
resolve: {subject: SubjectResolver},
children: [
{
path: ':someParammeeero',
component: B,
canActivate: [BGuard]
},
{
path: '',
component: A
}
]
У компонента A есть кнопка, которая перенаправляет на компонент B. Когда я нахожусь в компоненте A, у меня есть доступ к route.data.subject, но когда я пытаюсь перейти к компоненту B, внутри активированного маршрута BGuard внутри данных нет объекта, но есть param1, так что … похоже, что наследование работает, но нев случае разрешения. Внутри guard я должен получить доступ к route.parent.data.subject.
Когда я нахожусь в компоненте B и обновляю страницу, все работает правильно.
У меня есть два разных поведения внутри guard.
- Когда я перехожу к компоненту B, мне нужно получить доступ к route.parent.data.subject.
- Когда я нахожусь на странице компонента B и обновляю страницу, я должен получить доступ к route.data.subject
Это ошибка или ошибка? Может быть, моя структура маршрутизации неверна?
Ответ №1:
Проблема заключалась в том, как я переходил от компонента A к компоненту B
this.router.navigate(..., {relatedTo: this.activatedRoute})
‘RelatedTo’ каким-то образом удалил наследование из /a в /a:someParammeeero