Angular 角度检查服务实例

Angular 角度检查服务实例,angular,typescript,angular-routing,angular-components,Angular,Typescript,Angular Routing,Angular Components,我正在尝试实现一个canDeactivateguard。为此,我需要检查组件上服务实例的属性。但是,由于该服务可能使用不同的别名注入,因此我尝试将所有属性检查为服务的实例 canDeactivate( component: Component, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState ? : RouterStateSnapshot ): O

我正在尝试实现一个
canDeactivate
guard。为此,我需要检查组件上服务实例的属性。但是,由于该服务可能使用不同的别名注入,因此我尝试将所有属性检查为服务的实例

canDeactivate(
    component: Component,
    currentRoute: ActivatedRouteSnapshot,
    currentState: RouterStateSnapshot,
    nextState ? : RouterStateSnapshot
): Observable<boolean> | Promise<boolean> | boolean {

    let tabsService;

    const componentProps = Object.entries(component);

    console.log(componentProps);

    for (let i = 0; i < componentProps.length; i++) {
        if (componentProps[1] instanceof TabsService) {
            console.log(true);
            tabsService = componentProps[1];
            break;
        }

        console.log(componentProps[1] instanceof TabsService);
    }

    ...
}
canDeactivate(
组件:组件,
currentRoute:ActivatedRouteSnapshot,
currentState:RouterStateSnapshot,
下一个状态?:路由器状态快照
):可观察的|承诺|布尔值{
让Tabservice;
const componentProps=Object.entries(组件);
console.log(componentProps);
for(设i=0;i
但是,这会导致所有
false
s


我该怎么做?或者我应该以其他方式获得一个实例?我知道用不同的别名来调用一个东西是不好的,但这在大量的DIs和团队开发(IMHO)中是不可避免的。

应该是
componentProps[I][1]
无处不在,而不是
componentProps[1]
,不是吗?

这不是一个单一的服务吗?是的。我意识到,在详细记录了每一个代码位之后,如果它是一个模块级的提供者,你知道如何实现它吗?即,获取包含组件的模块中提供的服务实例。问题是组件上使用了
canDeactivate
,并且该组件正在函数中传递。