【问题标题】:Save data in observable (ionic 4)将数据保存在 observable (ionic 4)
【发布时间】: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

中的 observable
export 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


【解决方案1】:

我已将 user.service.ts 放在 app.module 和 profile.module 的提供者中,但我可能会遗漏其他内容。

有一个问题,从profile.module提供者中删除UserService。现在profile.module 拥有自己的UserService 提供者,而不是使用全局提供者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2018-01-01
    • 2020-04-10
    • 1970-01-01
    • 2019-08-10
    相关资源
    最近更新 更多