1

我正在构建一个使用 ngrx/store 进行状态管理的 Angular 应用程序,它有一个用户对象作为状态的一部分。

用户类

export class User {
    constructor (
        public email: string
    ) {}

    get is_signed_in(): boolean {
        return this.email !== '';
    }
}

身份验证:

export class AuthGuard implements CanActivate {
    private user$: Observable<User>;
    constructor(
        private service: UserService,
        private router: Router
    ) {
        this.user$ = service.user$;
    }

    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
        return Observable.create((observer: NextObserver<boolean>) => {
            this.user$.subscribe((user: User) => {
                console.log('authguard', user);
                console.log('authguard', user.email);
                console.log('user.is_signed_in', user.is_signed_in);
                if (!user.is_signed_in) {
                    console.log('redirecting to signin page');
                    this.router.navigate(
                        ['user', 'signin'],
                        {
                            queryParams: {
                                url: state.url
                            }
                        }
                    );
                }

                observer.next(user.is_signed_in);
                observer.complete();
            });
        });
    }
}

但在 authguard 类中, user.is_signed_in 属性未定义。为什么?

4

0 回答 0