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);
}
...
}
但是,这会导致所有 false
s。
我该怎么做?或者我应该以其他方式获得实例吗?我知道用不同的别名调用一个东西是不好的,但是对于大量的 DI 和团队开发(恕我直言),这是不可避免的。
到处都应该是 componentProps[i][1]
而不是 componentProps[1]
,不是吗?
我正在尝试实施 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);
}
...
}
但是,这会导致所有 false
s。
我该怎么做?或者我应该以其他方式获得实例吗?我知道用不同的别名调用一个东西是不好的,但是对于大量的 DI 和团队开发(恕我直言),这是不可避免的。
到处都应该是 componentProps[i][1]
而不是 componentProps[1]
,不是吗?