2017-11-21 35 views
0

canActivateルートイベントはブールオブザーバブルを受け入れます。は、別の観測可能なものに観測可能です。

インスタンス化されたユーザーオブジェクト、またはnullがauthService.getUser()から返りたいです。

ユーザーの値に応じて、ブール値の観測値にtrue/falseを戻したいと考えています。

どうすればいいですか?

canActivate() : Observable<boolean> 
    { 
     let userObservable = this.authService.getUser(); 
     userObservable.subscribe((user) => { 
      if (user == null) { 
        this.authService.startSigninMainWindow(); 
        return false; 
      } 
      else 
      { 
       return true; 
      } 
     }); 
     return new Observable<boolean>("I want to pass here the 'future' result of the userObservable"); 
    } 

答えて

3
return this.authService.getUser() 
    .do(user => { 
    if (user == null) { 
     this.authService.startSigninMainWindow(); 
    } 
    }) 
    .map(user => !!user); 
+0

co00olのたわごと、それが働いたおかげ!私はこのすべてのrxjsのことを学ぶ必要があります:P – HelloWorld

+0

私はまだそれを作った:.map (user => !! user);だから私は理解しやすく... – HelloWorld

+0

@HelloWorld 'User、boolean'は正しいタイプではありません。組み込みのブール値を述語 '.map(ブール)'として使用するのが普通です。 – estus

関連する問題