Как проверить класс с instanceof на параметре маршрута canActivate - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь распознать тип компонента внутри защиты маршрутизации canActivate в Angular 7.

Метод CanActivate имеет параметр маршрута, который приносит с собой параметр компонента: это должен быть компонент, вызывающий защитное устройство в модуле маршрутизации.

Проблема в том, что, когда я выполняю набор компонентов on с параметром маршрута, ничего не получается.

Мой класс расширяет и абстрактный класс, и я попытался проверить instanceof класса детей с его родительским абстрактным классом.

export abstract class CapabilityCheck {
    abstract checkCapability(): boolean;
}

export class HomepageComponent extends CapabilityCheck {

    constructor(private router: Router,private licenzeService: LicenzeService) {
        super();
    }

    [...]

    /**
     * Override check capabilities
    */
    checkCapability(): boolean {
        return this.licenzeService.capabilities['HOMPEAGE'];
    }
}  


@Injectable()
export class CapabilityGuard implements CanActivate {

    constructor(private cookieService: CookieService,
            private router: Router) {}

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {

        if (route.component instanceof CapabilityCheck) {
            return route.component.checkCapability();
        } else {
            [...]
        }
    }
} 

Я только ожидал, что экземпляр route.component CapabilityCheck вернет true, но это не так. Проверка состояния возвращает false.

Я скопировал код из другого вопроса, но теперь я думаю, что никто не проверял код.

Где я делаю не так? HomeComponent расширяет абстрактный класс, поэтому значение CapabilityCheck не должно возвращать true?

Заранее спасибо

...