в моем проекте у меня есть несколько маршрутов, которые принимают параметры.
пара моих маршрутов (братьев и сестер):
{
path: '', component: HomeComponent,
},
{
path: 'factories', component: FactoriesComponent, canActivate: [AuthGuard],
resolve: [FactoriesResolverService],
children: [
{
path: ':index/factory', component: DetailsFactoryComponent, canActivate: [DetailsFactoryGuard]
},
{
path: ':index/factory/edit', component: EditFactoryComponent, canActivate: [DetailsFactoryGuard]
}
]
},
у меня есть несколько вещей, которые я просто не могу понять как сделать
- после того, как я отредактирую фабрику (например, URL: 'factory / 3 / factor / edit'), я хочу вернуться к URL 'фабрики'.
я попробовал следующее:
private router: Router
private route: ActivatedRoute
this.router.navigate(['../']);
this.router.navigate(['../'], {relativeTo: this.route});
this.router.navigate(['../../'], {relativeTo: this.route});
this.router.navigate(['../..'], {relativeTo: this.route});
this.router.navigate([''], {relativeTo: this.route});
this.router.navigate(['/'], {relativeTo: this.route});
this.router.navigate(['../'], {relativeTo: this.route.parent});
все, что привело к перенаправлению на домашнюю страницу / компонент (url: "")
я не могу перемещаться по жесткому пути ( this.router.navigate (['фабрики']);) потому что у меня есть другой путь, который имеет возможность редактировать фабрику, и я также хочу вернуться туда к родительскому пути (из 'details /: index / factory / edit') вернуться к «подробностям»)
Я хочу проверить параметр «index» - проверьте, что у меня есть фабрика, которая соответствует номеру, а также проверьте, что это число. в случае сбоя проверки перенаправьте на путь «фабрики» / «детали».
я попытался сделать это через охрану, но когда пользователь обновил sh страницу, мои данные фабрики сбрасываются (я используйте состояние NgRX для сохранения данных). я пытался использовать распознаватель, но распознаватель вызывался только после охранника, и я не могу выбраться от охранника, или я попал в бесконечное число. oop
есть идеи, как это реализовать?
=======================
РЕДАКТИРОВАТЬ
относительно первой проблемы, я нашел решение:
const currUrl = this.route.snapshot ['_ routerState']. Url.substring (1) .split ("/"); this.router.navigate ([currUrl [0]]);
currUrl будет иметь массив с полным URL-адресом - первое значение массива - это родительский путь
, все еще интересующийся Вторая проблема