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
,并且该组件正在函数中传递。