J'utilise l'API OMDB (DB en ligne DB). J'ai créé une interface qui renvoie les types de données attendus. Lors de la demande de données via la méthode HTTP GET, les données renvoyées sont: {Recherche: Array (10), TotalResults: "31", réponse: "vrai"}. Les données que j'ai besoin sont dans le tableau de recherche. Lors de l'abonnement, j'utilise res.Search pour accéder à ces informations: S'abonner (((res) => {res = this.movieresults = res.Search; Cependant, l'erreur indique que la recherche n'existe pas sur mon interface. Comment puis-je résoudre ce problème s'il vous plaît?
/ * Mon interface * / P>
/* GET request*/ getData(event) { const film = event.target.value; this.data.searchFilm(film) .subscribe( (res) => { /** Sort out res.Search issue */ res = this.movieResults = res.Search; console.log(res); }); }
4 Réponses :
Parce que votre wearchInterface contient une clé mais vos données contiennent la clé p> vous pouvez faire une chose comme - p> et p>
Il existe deux structures de données impliquées ici: l'externe, renvoyée par le service HTTP, que vous avez décrite dans votre question: et celui que vous vous souciez que pour chaque Elément du tableau de recherche: SearchInterface. P> Votre service ne transforme pas la réponse que vous obtenez du serveur. Donc, son type de retour ne peut donc pas être Mais un meilleur design, puisque vous ne vous souciez pas des autres parties de la réponse réelle, seriez-vous de transformer la réponse réelle sur ce que vous vous souciez réellement de: un tableau observable
réticalResponse code>, il devrait donc être
observable
Array
carte code>: p>
@ amitk88 Pourquoi exportez-vous deux fois de recherche
Ne pas attribuer une variable comme celle-ci
Vérifiez la réponse que vous récupérez. Je ne vois pas la recherche comme une clé de votre interface, mais vous vous attendez à trouver la recherche dans la réponse.
Si vous attendez que la recherche soit une clé dans la réponse, incluez-la sous l'interface p> p> Exporter Interface SearchInterface code>
Exporter Par défaut SearchInterface; CODE>
res = this.movieresults = res.Search; code> p>
Merci d'avoir souligné ces problèmes, très apprécié :-)
Je créais un Stackblitz et nous sommes déjà avec 3 réponses :)
@JB NIZET La réponse est très élégante et c'est ce que je recommanderais aussi. Quoi qu'il en soit, voici ma contribution: p>
// aléatoire.tservices.ts p> // aléatoire.component.ts p> // ramdom.model.ts p> et voilã! p> p>
Merci pour votre réponse, très appréciée :-)