我正在使用'angularfire2 / firestore'与firestore后端进行离子项目。 为了在视图之间共享集合,我创建了一个firebaseservice提供者:
interface if_friend {
name: string;
email: string;
id?: any;
}
friendsCollection: AngularFirestoreCollection<if_friend>;
friends$: Observable<if_friend[]>;
constructor(public afStore: AngularFirestore) {
console.log('Hello FirebaseServiceProvider Provider');
this.friendsCollection = afStore.collection('/testmail@googlemail.com/Friends/friends/');
this.friends$ = this.friendsCollection.valueChanges();
}
getFriends(){
return this.friends$;
}
在视图的构造函数中我得到了像这样的Obserable:
public friends$: Observable<if_friend[]>;
constructor(public navCtrl: NavController, public firebaseService: FirebaseServiceProvider) {
this.friends$ = this.firebaseService.getFriends();
}
并在带有异步管道的html文件中使用它:
<ion-list>
<ion-item *ngFor="let friend of friends$ | async">
这适用于我进入的第一个视图。 我面临的问题是,数据不会出现在secound视图上(我在那里做同样的事情)。 我想我必须取消订阅observable,如果我离开第一个视图或者我需要将数据重写为separte数组。 谁能告诉我如何在两种观点之间正确分享观察结果?
谢谢和最诚挚的问候!
答案 0 :(得分:0)
我需要从服务中返回集合并在视图中使用valueChanges。 似乎异步管道现在可以正常工作。
祝你好运