Búsqueda de sitios web

angular - Typescript - Una función cuyo tipo declarado no es ni 'void' ni 'any' debe devolver un valor


Soy nuevo en Angular2/Typescript, estoy tratando de compilar mi proyecto pero obtengo este error:

Una función cuyo tipo declarado no sea 'void' ni 'any' debe devolver un valor

Este es el código:

SyncCustomer(codCli: string): Observable<any>
{ 
    this.mdService.Ordini_Sincronizza(codCli).subscribe(
    data => {          
      return Observable.of(data);
    },
    error => {
      console.log(error);
      return Observable.of(error);
    });  
}

No me doy cuenta de dónde está el problema...

¡Gracias por el apoyo!

ACTUALIZACIÓN 001:

Edité el código de esta manera y ahora compila...

  SyncCustomer(codCli: string): Observable<any> {
    return Observable.of(this.mdService.Ordini_Sincronizza(codCli).subscribe(
      data => {
        return data;
      },
      error => {
        console.log(error);
        return error;
      }));
  }

¿Tiene sentido devolver un observable del subscribe ???

Respuesta #1

La parte return data/return error solo es relevante para los dos callbacks, tu método no devuelve nada en tu primer código, y un Subscription para el segundo.

Si quieres devolver un Observable, no deberías suscribirte directamente:

SyncCustomer(codCli: string): Observable<any> {
  return Observable.of(this.mdService.Ordini_Sincronizza(codCli);
}

En realidad, no creo que necesites suscribirte aquí. Necesitas suscribirte para que un Observable frío comience a emitir, pero deberías suscribirte donde necesites los datos (generalmente dentro de tu componente) o no suscribirte en absoluto dentro del código del componente, sino dentro de la plantilla usando la tubería async.

Artículos relacionados