В настоящее время у меня есть защита маршрута, например
export class EntityGuard implements CanActivate {
constructor(private readonly router: Router, ...) {}
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean | UrlTree> {
...
Эта защита активируется для URL
basePath/select/10/123
, что означает
basePath/select/:type/:id
Когда определенное условие выполнено, мне нужно принудительно вернуться к
basePath/select/:type
. Как мне это сделать, используя createUrlTree
?Например,
if (...) {
return of(this.router.createUrlTree([../', type]));
}
Мне нужно установить параметр
{ relativeTo: parent }
.Однако я не могу найти способ сделать это.
Мое текущее решение -
private navigateBack(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const end = state.url.indexOf(route.url[route.url.length - 1].path);
const parentUrl = state.url.slice(0, end);
return of(this.router.createUrlTree([parentUrl]));
}
, которое мне действительно не нравится.Манипулирование струнами для меня не очень.