Angular 5 Подписаться на наблюдаемую внутри SwitchMap - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь подписаться на внутреннюю Observable.Вот что я делаю:

getDates() {
  if (this.booking.id) {

    this.jobService.findById(this.booking.id)
      .map(job => job[0])
      .switchMap((job) => {
        return job ? this.bookingService.findByPropertyId(job.property.id) : Observable.empty();
      }, (job: Job, bookings: Booking[]) => {
        this.mark_jobs_unavailable(job, bookings);
        return job;
      })
      .subscribe(job => {
        this.bookingJob = job;
      });

  }
}

Мой код работает нормально. Единственное, чего я пытаюсь добиться - это также подписаться на изменения моих бронирований.В настоящее время, так как я не уверен, где мне подписаться на Observable, который я получаю от bookingService.findByPropertyId, мое приложение не отражает изменений, происходящих в коллекции заказов.

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Вы можете попробовать что-то вроде этого:

this.jobService.findById(this.booking.id)
    .mergeAll() // or .mergeAll().first()
    .switchMap(
        job => this.bookingService.findByPropertyId(job.property.id),
        (job, bookings) => [job, bookings]
    )
    .subscribe(([job, bookings]) => {
        this.bookingJob = job;
        this.mark_jobs_unavailable(job, bookings);
    });

Теперь у вас есть и работа, и бронирование в методе подписки

0 голосов
/ 20 мая 2018

Чтобы получить изменения для бронирований, bookingService.findByProperyId() должен возвращать наблюдаемые значения всякий раз, когда (т.е. он может возвращать несколько значений в течение определенного периода времени), когда происходит изменение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...