인증 상태를 확인하려면 te 백 엔드를 확인해야하지만 관찰 가능한 반환이 완료되기 전에 te 코드가 완료됩니다. 어떤 결과가 나올지 모릅니다.각도 2+ 방법/관찰 완료 대기
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
this.isAuthenticated();
return this.authenticated;
}
isAuthenticated(){
this.loginService.isAuthenticated()
.subscribe(status => this.authenticated = status)
}
코드가 반환되기 전에 관찰 가능 상태가 완료되기 위해 관찰 가능 상태가 완료 될 때까지 기다릴 수 있도록이 코드를 어떻게 변경합니까?
주 : 아래 그림과 같이 각도 canActivate 방법은 내가 코드를 작성하는 것을 허용하지 않습니다
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
this.loginService.isAuthenticated()
.subscribe(status => {
this.authenticated = status;
return this.authenticated;
});
}
이는 따라와 오류가 발생합니다 :
Class 'AuthGuard' incorrectly implements interface 'CanActivate'.
Types of property 'canActivate' are incompatible. Type '(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => void' is not assignable to type '(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => boolean | Observable | Pr...'. Type 'void' is not assignable to type 'boolean | Observable | Promise'.
이에 대한 해결책에 대한 제안 오류도 도움이 될 것입니다.
canActivate가 대신 관찰 가능한의, true 또는 false를 돌려이 가능할까요? – phicon
또한 가입하면 백엔드가 항상 반환됩니다. true 또는 false. Subscribe() 메서드를 추가하지 않아도됩니까? – phicon
@phicon 이것은 정확히 여러분의 에러 메시지가 말하는 것입니다.'boolean | 관찰 가능한 | 약속한다. 부울 값, 부울 값의 관찰 가능 값 또는 부울 값을 반환해야합니다. 'this.authenticated'는 원래 코드에서 정의되지 않았습니다. – estus