J'essaie donc de m'abonner à un service simple qui renvoie des données à partir d'un fichier JSON local.Abonnez-vous à observable renvoie undefined
J'ai réussi à faire fonctionner le service, je peux le déconnecter dans la fonction, mais quand je m'abonne au service dans le composant angulaire 2, il est toujours indéfini. Je ne suis pas sûr pourquoi? Toute aide serait très appréciée.
API Service
export class ApiService {
public data: any;
constructor(private _http: Http) {
}
getData(): any {
return this._http.get('api.json').map((response: Response) => {
console.log('in response', response.json()); //This logs the Object
this.data = response.json();
return this.data;
})
.catch(this.handleError);
}
}
Component
export class AppComponent {
public data: any
public informationData;
constructor(private _api: ApiService) {}
public ngOnInit(): void {
console.log(this.getDataFromService()); // This return undefined
}
public getDataFromService() {
this._api.getData().subscribe(response => {
this.informationData = response;
return this.informationData;
});
}
}
'getDataFromService' ne se sont pas retournés quoi que ce soit. Changez '.subscribe' en' .map' et renvoyez l'observable résultant, puis utilisez '| async' pour le résoudre dans le template. – jonrsharpe
Une fonction de souscription ne renvoie pas les données. Il renvoie un objet 'Subscription'. c'est-à-dire si vous retournez l'appel de fonction lui-même. –
@SurajRao Oui, je l'ai remarqué, comment puis-je l'obtenir pour retourner les données de réponse? –