AngularFire在我的组件中只启动一次,但在我的html模板中运行良好

AngularFire在我的组件中只启动一次,但在我的html模板中运行良好,angular,firebase,rxjs,firebase-authentication,angularfire2,Angular,Firebase,Rxjs,Firebase Authentication,Angularfire2,我正在使用firebase构建一个Angular登录应用程序,并尝试订阅组件中可观察到的用户,如下所示: export class UserEditComponent implements OnInit { constructor(public authService: AuthService) {} ngOnInit() { this.authService.user.subscribe(user => { console.log(user); }

我正在使用firebase构建一个Angular登录应用程序,并尝试订阅组件中可观察到的用户,如下所示:

export class UserEditComponent implements OnInit {

  constructor(public authService: AuthService) {}

  ngOnInit() {
    this.authService.user.subscribe(user => {
      console.log(user);
    });
  }
}
以下是AuthService中定义的可观察项:

export class AuthService {

  public user: Observable<firebase.User>;

  constructor(public auth: AngularFireAuth) {
    this.user = auth.authState;
   }
}
这工作得很好,这向我表明,问题在某种程度上与firebase提供的特定可观测数据有关。不过,我不知道该怎么办。我能想到的一切都是令人讨厌的

*更新2*

似乎正在发生的是,即使未调用
next
函数,底层用户值仍在更新。我不知道这是为什么。我将我的
ngOnInit
更改为如下内容:

export class UserEditComponent implements OnInit {

  public userCurrent: firebase.User;

  constructor(public authService: AuthService) {}

  ngOnInit() {
    obj = this;
    this.authService.user.pipe(first()).subscribe(user => {
      obj.userCurrent = user;
    });
  }
}

userCurrent
对象的值保持更新。我不知道发生了什么,但它满足了我的需要。

你确定他们都在使用同一个AuthService实例吗?@martin如果他们没有使用同一个AuthService实例,那么模板是如何更新的?他们不是都在使用构造函数中注入的对象吗?你可以提供stackblitz吗?@Vikas我在创建了一个stackblitz。然而,它并没有重现这个问题。在这种情况下,可观察的对象是在服务中创建的,而不仅仅是从另一个包传递过来的。不知道怎么解释。
export class AuthService {

  public user: Observable<any>;

  constructor(public auth: AngularFireAuth) {
    this.user = Observable.create(function (observer) {
      setInterval(() => observer.next(new Date().toString()), 1000 );
    });
  }
}
export class UserEditComponent implements OnInit {

  public userCurrent: firebase.User;

  constructor(public authService: AuthService) {}

  ngOnInit() {
    obj = this;
    this.authService.user.pipe(first()).subscribe(user => {
      obj.userCurrent = user;
    });
  }
}