将FireStoreCollection共享到多个视图

时间:2018-02-11 10:57:38

标签: google-cloud-firestore angular2-observables angularfire5

我正在使用'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数组。 谁能告诉我如何在两种观点之间正确分享观察结果?

谢谢和最诚挚的问候!

1 个答案:

答案 0 :(得分:0)

我需要从服务中返回集合并在视图中使用valueChanges。 似乎异步管道现在可以正常工作。

祝你好运