Предотвращение маршрутизации к вторичному представлению, если страница обновляется в угловом режиме при входе в рекурсию - PullRequest
1 голос
/ 11 октября 2019

Я занимаюсь разработкой «Запретить маршрутизацию к вторичному представлению, если страница обновляется в угловом формате» код из: 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);
    }
}

Примечание: Я хочу прекратить, если пользователь вручную вводит маршруты, которых не существует, и на странице обновляет правильный маршрут?

...