我该如何检查用户是否登录
ngOnInit() {
this.auth.subscribeLogger().subscribe(
(data: any) => {
this.checkUserLogin = data;
}
);
}
获取值是真还是假,但我无法控制台记录它,我知道这是错误的,但是如果用户从authservice登录或不登录,如何获得价值?
这是文件
history.guard.ts
import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { AuthService } from 'app/core/service';
@Injectable({
providedIn: 'root'
})
export class HistoryGuard implements CanActivate {
checkUserLogin: boolean;
constructor(
private router: Router,
private auth: AuthService,
){}
ngOnInit() {
this.auth.subscribeLogger().subscribe(
(data: any) => {
this.checkUserLogin = data;
}
);
}
canActivate() {
if(this.checkUserLogin){
return true;
}
else{
return this.router.navigate(['mypage']);
}
}
}
最佳答案
CanActivate可以返回一个Observable。
还没有测试,但是类似的东西应该可以工作:
constructor(private router: Router, private auth: AuthService){}
canActivate(route: ActivatedRouteSnapshot, routeState: RouterStateSnapshot): Observable<boolean|UrlTree>|Promise<boolean|UrlTree>|boolean|UrlTree {
return this.auth.subscribeLogger().pipe(
map(isUserLoggedin => {
if (!isUserLoggedin) {
this.router.navigate(['mypage']);
}
return isUserLoggedin;
});
}
关于javascript - canActive angular如何从auth中获取值true false(是否登录),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57087116/