0

我有一个使用'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?

谢谢和最好的问候!

4

1 回答 1

0

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

此致

于 2018-02-14T06:43:59.287 回答