订阅主题没有赋值

问题描述 投票:1回答:1

我有getter和setter的服务:

// Service
import { Subject } from 'rxjs';

export class MyService {
  public currentUser: any = new Subject();

  ... there is a function where I call setCurrent and assign value

  set setCurrent(data: any) {
    this.currentUser.next(data);
    this._localStorage.set('user', JSON.stringify(data))
  }

  get setCurrent() {
    return this._localStorage.get('user');
  }
}

在我的组件中,我订阅了currentUser

// Component


  public user: User;

  constructor(
    public authService: AuthService,
  ) {
    this.authService.currentUser.subscribe(nextData => {
      this.user = nextData;
      console.log(nextData) // Expected value, it's here
      console.log(this.user) // Undefined
    })
  }

为什么它返回需要和期望值,但没有将它分配给组件变量?

angular rxjs
1个回答
0
投票

你什么时候设置setCurrent?如果您在订阅之前执行此操作,则不会获得当前值。您可以尝试将其更改为BehaviorSubject而不是Subject

© www.soinside.com 2019 - 2024. All rights reserved.