2016-06-26 6 views
4

canActivate angular2.0.0-rc.3에 문제가 있습니다.angular2 canActivate() Observable 응답이 작동하지 않습니다.

canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>{ 
    console.log('canActivate with AclService'); 
    // return true; 
    return Observable.create((observer:Subject<boolean>) => { observer.next(true); }); 
    } 

Observable 응답에서는 작동하지 않지만 단순한 부울 응답으로 작동합니다.

어떻게이 문제를 해결할 수 있습니까 ??

+0

"가 작동하지 않습니다"무슨 뜻? 너는 무엇을 기대 하느냐? 무슨 일 이니? –

+0

작동하지 않습니다 canActivate 역할이 작동하지 않습니다. 부울 (true 또는 false)을 반환하면 현재 경로에 대한 true aceess가 허가인지 여부를 반환합니다. 반환 값 Observable do not work – zahirnet

+0

같은 문제. 나는 질문에서 답을 따라 갔다. http://stackoverflow.com/questions/37897273/authguard-doesnt-wait-for-authentication-to-finish-before-checking-user하지만 작동하지 않는다. 내가 '진실을 돌려라.'라고 부르면 즉시 작동한다. –

답변

9

당신이 .first()을 추가하거나 완료 할 경우 다른 의해 Observable는 작동해야 의미

또는

canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean>{ 
    console.log('canActivate with AclService'); 
    // return true; 
    return Observable.of(true); 
} 
+0

.take (1)이 잘 작동하고, 감사합니다. – zahirnet

+0

... 그리고 Http 호출을 원한다면 어떻게해야합니까? 결과는 canActivate = false를 의미합니까? –

+0

죄송합니다. 나는 그 질문에 대해 이해하지 못합니다. –

관련 문제