7
votes

Définir correctement les types lors de la chaînage observable

J'ai une application angular2 qui a un service qui récupère une liste d'éléments. Il existe une méthode pour également chercher des informations plus spécifiques pour chaque élément de la liste. Ma configuration actuelle est la suivante:

The type argument for type parameter 'T' cannot be inferred from the usage.
Consider specifying the type arguments explicitly.
  Type argument candidate 'Item[]' is not a valid type argument because it is not a
  supertype of candidate 'Observable<Item[]>'.
    Property 'length' is missing in type 'Observable<Item[]>'.


0 commentaires

3 Réponses :


0
votes

Essayez d'ajouter des informations de type retournées à vos cartes et modifiez vos annotations de tableau:

  1. au lieu de élément [] , utilisez tableau <élément> .
  2. fetchdata (item: item): itemData et .map ((élément: article): itemData => this.itemsservice.fetchdata (article))

0 commentaires

1
votes

Je suis méfiant que cela pourrait avoir quelque chose à voir avec toarray () qui retourne observable .

Dans votre cas où vous définissez < Code> FetetCitems (): Observable Ça fait toarray () Pour retourner Observable []> pourquoi il jette une erreur même avec observable .

btw J'ai essayé de simuler votre situation avec des classes simulées et compilées sans erreurs (Typescript 2.0.3) mais peut-être J'ai fait une erreur quelque part et que ce n'est pas identique (?): xxx


0 commentaires

15
votes

Lorsque j'ai rencontré le même problème, la raison était que j'ai oublié d'importer réponse classe:

importer {http, réponse} de '@ angular / http';

J'espère que cela aide quelqu'un.


2 commentaires

FSCK! Cela vient d'être arrivé à moi et c'est arrivé depuis que je suis arrivé à faire confiance au Web Pastorm trop - Web Station de Web n'a pas ajouté automatiquement, et je n'ai même pas vérifié que ... :-)


@Boazrymland Yep, c'est étrange qu'il n'empêche même pas d'utiliser la classe qui n'est pas importée