我的应用程序中有一个路由守卫,我需要检查两个可观察对象是否有人成功,我应该允许该路由或阻止。
路由保护:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {
return (this.isValid().map(valid => {
console.log(valid);
return valid;
}) || this.isValidFromApi().map(valid => {
console.log(valid);
return valid;
}));
} //how to achieve something like this
}
private isValid() {
return this.service.details.map(resp => {
console.log(resp);
if (resp.data) {
return true;
} else {
return false;
}
});
}
private isValidFromApi() {
return this.service.getKeys().map((response) => {
console.log(response);
if (response) {
return true;
} else {
return false;
});
}
因此,如果isValid()或isValidFromApi()中的任何一个返回true,则路由保护canActivate应该处于活动状态。如何实现呢?我不想等待两个调用都完成,因为this.service.details实际上是一个BehaviorSubject,它保存了this.service.getKeys()的响应。
还有其他方法可以实现吗?
预先感谢