我尝试从服务中获取有关身份验证的信息,并遇到以下问题:
无法读取未定义的属性“ subscribe”
服务代码:
user:any;
constructor(private afAuth: AngularFireAuth, private http:HttpClient,private router: Router) {
this.afAuth.authState.subscribe(user=>{
this.user = user;
});
console.log(this.afAuth.authState);
}
userinfo(){
return this.user;
}
组件的代码:
user:any
constructor(public afAuth:AuthService) {
}
ngOnInit() {
this.afAuth.userinfo().subscribe(userinfo =>{
this.user = userinfo;
})
console.log(this.user.uid);
}
我在哪里错了?以及我该如何解决?
答案 0 :(得分:1)
问题在于userinfo
返回一个User
,而不是一个Observable,因此它没有subscribe
方法。
我将AuthService更改为
user: Observable<User>;
constructor(private afAuth: AngularFireAuth, private http:HttpClient,private router: Router) {
this.user = this.afAuth.authState;
}
此外,重新考虑为什么总是尝试在服务和组件中的属性中存储最新值。 Angular的哲学是使用连接的Observables
来生成值。