Относительная маршрутизация не работает в canActivate guard - PullRequest
0 голосов
/ 26 апреля 2019
import { AdminAuthService } from './admin-auth.service';
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router, Route, ActivatedRoute } from '@angular/router';
import { Observable } from 'rxjs';

@Injectable()
export class AdminAuthGuard implements CanActivate {


    constructor(private _authService: AdminAuthService, private _router: Router, private acRoute: ActivatedRoute) {
    }

    canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
        return new Promise((resolve, reject) => {
            this._authService.checkValidUser().then((resp) => {
                //let url = state.url.substr(0, state.url.lastIndexOf("/"));
                !resp && this._router.navigate(['../adminlogin'], {relativeTo: this.acRoute});
                //!resp && this._router.navigate([url, "adminlogin"]);
                resolve(resp);
            });
        })
    }
}

Я получаю следующую ошибку. ОШИБКА Ошибка: Uncaught (в обещании): Ошибка: невозможно сопоставить ни один маршрут.Сегмент URL: ошибка «adminlogin»: невозможно сопоставить ни один маршрут.Сегмент URL: 'adminlogin'

Код маршрутизации выглядит как

{
        path: "admin", component: AdminComponent,
        children: [
            { path: '', redirectTo: 'adminlogin', pathMatch: "full" },
            { path: 'adminlogin', component: LoginComponent },
            { path: 'list', component: ListComponent, canActivate: [AdminAuthGuard] }
        ]
    }

Может кто-нибудь помочь мне в этом?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Похоже, у вас нет пути, совпадающего с adminLogin.

Пожалуйста, добавьте в метод canActivate следующее: -

this._router.navigate(['adminLogin'], {relativeTo: this.acRoute})
0 голосов
/ 26 апреля 2019

Это говорит о том, что у вас нет маршрута, который соответствует adminLogin, обновите ваш canactivate

!resp && this._router.navigate(['adminlogin'], {relativeTo: this.acRoute});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...