我试图在Angular 7中的canActivate路由防护中识别组件类型。
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 {
[...]
}
}
}
我只是希望CapabilityCheck的route.component实例返回true, 但事实并非如此。条件检查返回false。
我已经从另一个问题中复制了代码,但是现在我认为任何人都没有测试过该代码。
我在哪里做错了? HomeComponent扩展了抽象类,因此istanceofCapabilityCheck不应该返回true吗?
预先感谢