我需要给警卫注入服务。这个守卫检查用户是否被邀请,如果被邀请,他可以访问路由。
为了检查这个条件,我需要调用一个从数据库中获取这个信息的服务。
我有一个周期性的依赖关系错误,我理解我们不应该在保护中注入服务,但在这种情况下,我需要这样做:
providers: [AuthService, HackService, HacksStorageService, AuthGuard, EmailGuard],
还有警卫:
import { ActivatedRouteSnapshot, RouterStateSnapshot, CanActivate } from "../../../node_modules/@angular/router";
import { HacksStorageService } from "../shared/hacks-storage.service";
export class EmailGuard implements CanActivate {
constructor(
private hacksStorageService: HacksStorageService,
) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
this.hacksStorageService.fetchHack();
// check if user was invited. should be in the participants array
return true;
}
}
我很困惑。通常我使用保护来查看用户是否登录,所以我通常从FireBase导入内容,而不是从我自己的服务导入内容,所以不是循环依赖关系。
现在,我想根据我自己的数据检查是否发生了某个条件。如果由于循环依赖关系而不允许我注入服务,我如何在emailguard中注入自己的数据?
谢谢。