如何在canActivate路由参数上使用instanceof检查类

时间:2019-01-14 10:33:44

标签: angular typescript class routing instanceof

我试图在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吗?

预先感谢

0 个答案:

没有答案