1

我有以下代码

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被评估,然后返回 true 以继续路由。我该怎么做?谢谢。

4

1 回答 1

2

我可以看到您对 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 
   }))
}
于 2020-07-16T13:03:13.200 回答