Я занимаюсь разработкой «Запретить маршрутизацию к вторичному представлению, если страница обновляется в угловом формате» код из: https://www.bennadel.com/blog/3368-prevent-routing-to-secondary-view-if-page-refresh-in-angular-5-0-0.htm
Я разработал код ниже, но код входит врекурсия и та же гвардия продолжают исполняться в рекурсии.
@Injectable()
export class DirectAccessGuard implements CanActivate {
path: ActivatedRouteSnapshot[];
route: ActivatedRouteSnapshot;
constructor(private router: Router) { }
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if (this.router.url === '/' && !this.isPageRefresh()) {
this.router.navigate(['TOMainLandingPage']);
return false;
}
if (this.isPageRefresh()) {
this.router.navigateByUrl(this.getUrlWithoutSecondary(state));
return false;
}
return true;
}
// I determine if the current route-request is part of a page refresh.
private isPageRefresh(): boolean {
return (!this.router.navigated);
}
private getUrlWithoutSecondary(routerStateSnapshot: RouterStateSnapshot): UrlTree {
var urlTree = this.router.parseUrl(routerStateSnapshot.url);
var segment = urlTree.root;
while (segment && segment.children) {
delete (segment.children.secondary);
segment = segment.children[PRIMARY_OUTLET];
}
return (urlTree);
}
}
Примечание: Я хочу прекратить, если пользователь вручную вводит маршруты, которых не существует, и на странице обновляет правильный маршрут?