离子3结合可观测量

时间:2017-07-25 01:30:35

标签: angular ionic2 observable ionic3

我正在尝试创建一个可观察的流,它将监听我的firebase数据库并且还会改变位置。这是我正在使用的。

在我的服务中,我创建了一个我更改位置的主题: private location: Subject<{ lat: number, lng: number }> = new Subject(); 然后我有一个函数返回这些组合的observable:

  getBusinessData() {
    return Observable.combineLatest(this.db.list(`${this.root}`), this.location, (x, y) => ({ x, y })).map(data => {
      return data.x;
    });
  }

如图所示,我结合检测数据库中的更改以及更改位置时。从加载一页开始我调用此函数

 this.b = this.provider.getBusinessData()
 this.provider.changeLocation({ lat: 41.059481, lng: -82.023820 });

<ion-item *ngFor="let business of b | async"  >
  <h1> {{business.name}}</h1>
</ion-item>

要更改位置,我在我的提供商中调用此功能

  changeLocation(newLocation: { lat: number, lng: number }) {        
      this.location.next(newLocation)
  }

我希望将这些结合起来,因为如果我更改位置,我希望我的订阅再次发出值,从而根据新位置映射数据库中的数据。我的问题是,如果有人知道如何实现这一目标。可能我需要为我的位置设置一个默认值,这样组合的observable将在第一次订阅时发出该值。也许我需要做一些完全不同的事情。如果有人有任何想法,我一直试图让这个工作没有运气,这将是一个巨大的帮助。谢谢!

0 个答案:

没有答案