Angular 检查服务实例

Angular check service instance

我正在尝试实施 canDeactivate 守卫。为此,我需要检查组件上服务实例的属性。但是,由于可以使用不同的别名注入此服务,因此我尝试检查所有属性是否为服务的实例。

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);
    }

    ...
}

但是,这会导致所有 falses。

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

到处都应该是 componentProps[i][1] 而不是 componentProps[1],不是吗?