【发布时间】:2020-06-16 14:31:01
【问题描述】:
我有一个尝试登录检查角色的子模块。
this.auth.user$.subscribe(u => console.log(u)) // Child returning null
服务
private user: BehaviorSubject<User> = new BehaviorSubject<User> (null);
user$: Observable<User> = this.user.asObservable();
async getUser() {
try {
const { token, claims, expirationTime } = await (await this.afAuth.currentUser).getIdTokenResult(true);
const { name, email } = claims;
const expiry = Date.parse(expirationTime);
const authDetails = { token, name, email, expiry };
if (claims.claims && claims.claims.length === 1) {
const { groupId, role } = claims.claims[0];
this.user.next({ ...authDetails, groupId, role });
} else if (claims.claims && claims.claims.length > 1) {
this.user.next({ ...authDetails, allClaims: claims.claims });
}
return this.user;
} catch (err) {
throw err;
}
}
我已将 Service 作为提供者放入所有模块中
我做错了什么?
【问题讨论】:
-
在您订阅的那一刻,用户的价值似乎仍然为空。什么时候使用 getUser 函数?之后console.log怎么样?
-
有一个登录页面,注册功能被激活并调用getUser()。并且此时出现值....然后它加载子模块然后调用 subscribe 。价值为空。我对 Observables 不是很熟悉 ..