Слить карту 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;
})