【问题标题】:Angular 9 - Guard: canActivate wait until specific condition is metAngular 9 - Guard:canActivate 等到满足特定条件
【发布时间】:2020-07-16 12:54:13
【问题描述】:

我有以下代码

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {

 this.userStore$ = this.store.pipe(select('userStore'));
 return this.userStore$.pipe(
   map( res => { 
     if(res) return true 
   }))
}
      

第一次 res 是未定义的,所以 canActivate 解析自己返回 false。我需要的是保持它的监听直到 res 被 valorized,然后返回 true 以继续路由。 我该怎么做?谢谢。

【问题讨论】:

    标签: observable angular9 angular-guards


    【解决方案1】:

    我可以看出你对 RXJS 非常熟悉。 RXJS 提供过滤功能,可以根据特定条件允许或拒绝流的流动。

    如果您将过滤器管道添加到流中,它将根据条件拒绝所有流。您始终必须指定让流程继续的真实条件。

    文档https://www.learnrxjs.io/learn-rxjs/operators/filtering/filter

    // you need to import the filter from rxjs operators
    import {filter, map } 'rxjs/operators';
    
    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
    
     this.userStore$ = this.store.pipe(select('userStore'));
     return this.userStore$.pipe(
       filter(res => res != undefined),
       map( res => { 
         if(res) return true 
       }))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 2019-08-19
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      相关资源
      最近更新 更多