如何从AngularFire2中的BehaviorSubject获取当前值?

时间:2017-09-09 18:02:46

标签: angular firebase angularfire2 behaviorsubject

我正在使用AngularFireDatabase来获取我的数据库的一部分,例如db.object('/accounts/'+this.cid);,其中this.cidBehaviorSubject,可以更改。我是以错误的方式解决这个问题吗?

cid: BehaviorSubject<string>;
account: FirebaseObjectObservable<any>;
constructor(private db: AngularFireDatabase) {
  this.cid = new BehaviorSubject<string>('fs2ejD4ds');
  this.account = db.object('/accounts/'+this.cid);

基本上每当我运行this.cid.next('fhEj2jd')时,我都希望它能够更改我们在Firebase中尝试引用的对象。

1 个答案:

答案 0 :(得分:2)

要从BehaviorSubject获取当前值,您可以调用getValue方法,请参阅 docs

this.account = db.object('/accounts/'+this.cid.getValue());

但请注意,每当this.account的当前值发生变化时,您都必须覆盖原始的可观察this.cid。如果你只是订阅this.account,那么在用新的observable覆盖它之前你必须取消订阅(对于取消订阅,你可以使用异步管道自动执行它。)

请参阅简单 demo