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.
