将 FireStore 集合共享到多个视图

Share FireStoreCollection to serveral views

我有一个使用 'angularfire2/firestore' 的带有 firestore 后端的离子项目。 为了在视图之间共享一个集合,我创建了一个 firebaseservice provider:

      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?

谢谢并致以最诚挚的问候!

我需要 return 来自服务的集合并在视图中使用 valueChanges。 似乎异步管道现在可以正常工作了。

此致