我有一个使用'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">
这适用于我进入的第一个视图。我面临的问题是,数据不会出现在第二个视图上(我在那里做同样的事情)。我想我必须取消订阅 observable,如果我离开第一个视图或者我需要将数据重写到一个单独的数组中。谁能告诉我如何在两个视图之间正确共享 observable?
谢谢和最好的问候!