1

你能告诉我我做错了什么吗?

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

我收到此错误:“OperatorFunction”类型上不存在属性“订阅”

4

2 回答 2

3

您不能订阅运营商。您需要按以下方式订阅。

this.scheduleService.GetZones(environment.systemId)
    .pipe(
       mergeMap((zone: Zone) => {
          return this.dashboardService.GetLatestMeasurementValue(environment.systemId, zone.sensorId);
       })
     )
    .subscribe(mois => {
      this.currentMoisture = mois;
    })
于 2019-12-16T12:09:21.073 回答
0

我看到我们正在通过这个方法名称将区域值映射到最新的度量值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;
    })
于 2019-12-16T12:16:36.310 回答