【发布时间】:2020-05-22 10:02:08
【问题描述】:
我想在登录后将用户数据保存在 observable 中,稍后在个人资料页面中检索数据。 我有一个简单的 user.service.ts
@Injectable()
export class UserService {
private _user: BehaviorSubject<IRegisterUser> = new BehaviorSubject<IRegisterUser>(null);
public user$: Observable<IRegisterUser> = this._user.asObservable();
constructor(public afAuth: AngularFireAuth) {}
public setUser(user) {
this._user.next(user)
}
成功更新了行为主体。
稍后我尝试访问 profile.page.ts
中的 observableexport class ProfilePage implements OnInit {
constructor(public userSrv: UserService) { }
ngOnInit() {
this.userSrv.user$.subscribe(resp=> {
console.log(resp)
})
}
}
但我的回答是 null
我已将 user.service.ts 放在 app.module 和 profile.module 的提供者中,但我可能会遗漏其他内容。
【问题讨论】:
-
您是否将新的
user推送到可观察对象?如果不是,您将收到默认值null。现在,如果您在订阅后将新用户推送到 observable,他们将反映在profile.page中。 -
我所做的是
this._user.asObservable();并将值添加到行为主题。我应该在哪里将值推送到可观察对象? -
当用户登录时,我调用方法
setUser(user)并成功更新了行为主题。我在调试模式下看到它。问题是我在profile.page.ts的订阅由于某种原因无法正常工作。
标签: angular ionic-framework ionic4 injectable