1

我正在使用 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 中引用的对象。

4

1 回答 1

2

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

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

但请记住,this.account每次this.cid更改 的当前值时,您都必须覆盖原始的 observable。如果您只是订阅this.account,那么您必须在用新的 observable 覆盖之前取消订阅(对于取消订阅,您可以使用异步管道自动完成)。

参考简单的演示

于 2017-09-09T18:20:52.843 回答