2017-11-21 11 views
0

canActivate 라우트 이벤트는 부울 관측 가능을 허용합니다.다른 관측 가능으로 관측 가능

authService.getUser()에서 인스턴스화되었거나 null 인 사용자 객체를 반환하고 싶습니다.

사용자 값에 따라 부울 관찰 가능에 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'은 올바른 타입이 아닙니다. built-in Boolean을 술어'.map (Boolean)'로 사용하는 것이 일반적입니다. – estus

관련 문제