angular - 想在 authguard 服务中调用服务方法
问题描述
我是 Angular 的新手,我只需要在 authguard 服务中调用一个服务方法。我刚需要的服务功能如下。注意:不想改变服务功能。
loadOrganizations() {
this.getOrganizations().subscribe(
(results) => {
const organizationList = [];
if (results.organizations) {
results.organizations.forEach((element) => {
this.appendOrganization(element, organizationList);
this.loadChildrenOrganization(element.children, organizationList);
});
}
this.organizations$.next(organizationList);
this.organizations$.complete();
},
(error) => {
this.organizations$.next([]);
this.organizations$.complete();
}
);
}
我的 authguard ts 中的调用方法如下。
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Promise<boolean> {
this.appService.loadOrganizations().then((answer: boolean) => {
return answer;
});
}
我在“Promise”和“then”处收到了返回类型错误。关于如何在 authguard 服务中调用此服务方法的任何线索?
解决方案
感谢您的支持。我解决了
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
this.appService.loadOrganizations();
console.log("authuard is calling")
return true;
}
推荐阅读
- laravel - Laravel - 在一个请求中保存多行,可能吗?
- python - 将函数应用于合并的数据集并出现错误
- openssl - 为什么 Mac 和树莓派上的 openssl rsautl 会产生不同的结果?
- google-sheets - 谷歌电子表格:如何按大陆查询人口最多的国家?
- laravel - 未找到 Laravel 5.5 控制器
- javascript - JavaScript:在图像滑块中的每个图像上形成表单?
- python - 具有不同字符数的正则表达式
- javascript - Javascript 布尔验证
- android - geoQuery不输出数据怎么办?
- elasticsearch - 有没有办法从elasticsearch中获取纪元时间?