Я пытаюсь распознать тип компонента внутри защиты маршрутизации 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?
Заранее спасибо