合并地图 Angular

Merge map 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'

上不存在

您无法订阅接线员。您需要按以下方式订阅

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;
    })