Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angular – 返回布尔值而不是订阅canActivate大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个受canActivate防护保护的组件. checkLogin函数中的Authguard从一个observable订阅,但我不知道如何从它返回一个布尔值到canActivate.

guard.service.ts

canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): Boolean {
    let url: String = state.url;

    return this.checkLogin(url);
  }

    public checkservice:Boolean;
  checkLogin(url: String):Boolean {

         return this.loadAppSetTings().subscribe(res=>{
              console.log(this.checkservicE);
              if (this.checkservice == truE) 
              {
                   return true; 
            }
            else{
                this.router.navigate(['/error-user']);
                return false;
            }
            });
      }//checkLogin throws error as type subscription is not assignable to type Boolean

所以我想要的是如果this.checkservice为true,它应该返回true并且用户应该能够登陆被保护的路由但是如果它是假的,他应该被导航到错误用户.

Angular2 – return boolean with subscribe to canActivate这个问题与我的相似,但无法@L_801_10@我的问题.

有人可以@L_944_11@帮忙.

解决方法

canActivate也可以返回一个observable,请参阅定义 CanActivate-interface.只需相应地更改返回类型即可.

canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): Observable<Boolean> {
    let url: String = state.url;

    return this.checkLogin(url);
}

public checkservice:Boolean;
checkLogin(url: String):Observable<Boolean> {
     return this.loadAppSetTings().map(res=>{
          console.log(this.checkservicE);
          if (this.checkservice == truE) 
          {
               return true; 
        }
        else{
            this.router.navigate(['/error-user']);
            return false;
        }
    });
  }

大佬总结

以上是大佬教程为你收集整理的angular – 返回布尔值而不是订阅canActivate全部内容,希望文章能够帮你解决angular – 返回布尔值而不是订阅canActivate所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。