【发布时间】:2021-07-01 01:21:27
【问题描述】:
我是 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 服务中调用此服务方法的任何线索?
【问题讨论】:
-
你需要先在你的 loadorganisation 函数中将 observable 转换为 promise -learnrxjs.io/learn-rxjs/operators/utility/topromise
-
我们不能在不改变 loadorganisation 函数的情况下将这个函数的 observable 转换为 authguard 函数中的 promise 吗
-
你需要返回 observable 然后在 auth guard 服务中订阅它
-
loadOrganizations()函数不返回任何内容,既不承诺也不可观察。返回 observable 然后你可以订阅或者可以将其转换为 promise。
标签: angular typescript angular-services auth-guard