在Route Guard中可观察到多个,但仅等待一个-Angular 5

时间:2018-11-22 06:52:01

标签: angular angular5 observable angular-route-guards

我的应用程序中有一个路由守卫,我需要检查两个可观察对象是否有人成功,我应该允许该路由或阻止。

路由保护:

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()的响应。

还有其他方法可以实现吗?

预先感谢

0 个答案:

没有答案