Слить карту Angular

Вы можете сказать мне, что я делаю не так?

this.scheduleService.GetZones(environment.systemId)
  .pipe(
    mergeMap((zone: Zone) => {
      return this.dashboardService.GetLatestMeasurementValue(environment.systemId, zone.sensorId)
    })
    .subscribe(mois => {
      this.currentMoisture = mois;
    })
  );
}

Я получаю эту ошибку: свойство 'subscribe' не существует для типа 'OperatorFunction'

2 ответа

Решение

Вы не можете подписаться на оператора. Вам необходимо подписаться следующим образом.

this.scheduleService.GetZones(environment.systemId)
    .pipe(
       mergeMap((zone: Zone) => {
          return this.dashboardService.GetLatestMeasurementValue(environment.systemId, zone.sensorId);
       })
     )
    .subscribe(mois => {
      this.currentMoisture = mois;
    })

Я вижу, мы сопоставляем значение зоны с последним значением меры с помощью этого имени метода. GetLatestMeasurementValue. Если вас всегда интересует последнее значение, switchMap - лучший оператор

this.scheduleService.GetZones(environment.systemId)
    .pipe(
       switchMap((zone: Zone) => {
          return this.dashboardService.GetLatestMeasurementValue(environment.systemId, zone.sensorId);
       })
     )
    .subscribe(mois => {
      this.currentMoisture = mois;
    })

А если это разовое событие, просто map также будет выполнять работу, как показано ниже:

this.scheduleService.GetZones(environment.systemId)
    .pipe(
       map((zone: Zone) => {
          return this.dashboardService.GetLatestMeasurementValue(environment.systemId, zone.sensorId);
       })
     )
    .subscribe(mois => {
      this.currentMoisture = mois;
    })
Другие вопросы по тегам