Angulaire 4 - Http pour HttpClient - propriété "someproperty" n'existe pas sur le type d'Objet
Je suis en train de modifier une application existante de l'aide Http
à l'aide de HttpClient
, cependant j'ai une erreur.
Donc, dans mon service maintenant, vous pouvez voir le nouveau code vs l'ancien code qui a été commentée:
constructor(
//private http: Http
private http: HttpClient
) { }
getSidebar() {
//return this.http.get('http://localhost:3000/sidebar/edit-sidebar')
// .map(res => res.json());
return this.http.get('http://localhost:3000/sidebar/edit-sidebar');
}
Et dans mon page.component.ts
j'ai cette
this.sidebarService.getSidebar().subscribe(sidebar => {
this.sidebar = sidebar.content; //this does not work now
});
Cependant, pour la ligne au-dessus de laquelle je commente, j'obtiens cette erreur maintenant:
Property 'content'
does not exist on type 'Object'.
Cependant si je console.log(sidebar)
je reçois le texte suivant:
{_id: "59dde326c7590a27a033fdec", content: "<h1>sidebar here</h1>"}
Alors, quel est le problème?
Une fois de plus, Http
fonctionne mais HttpClient
ne pas.
OriginalL'auteur Vojislav Kovacevic | 2017-11-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez spécifier le type retourné, à l'aide d'une interface, la classe, etc. Par exemple, vous pouvez utiliser quelque chose comme ce qui suit:
Comme un exemple, la barre latérale peut être défini comme:
Voir Le typage de la réponse de l'angle de docs pour plus d'informations:
<Type>
, puis ilany
en tant que par défaut le type de retour.OriginalL'auteur Kirk Larkin
solution alternative:
qui va renvoyer la valeur de HttpClient, HttpClient analyser automatiquement la réponse JSON pour un Objet et la forme de cet objet n'est pas connu, c'est pourquoi Tapuscrit montrer cette erreur
OriginalL'auteur Fateh Mohamed
Vous pouvez attribuer à la variable(barre latérale) une interface explicitement dire ce qu'il va obtenir ou de céder à de sorte qu'il ne marche pas jeter erreur de compilation.
OriginalL'auteur Mayank Singh
vous pouvez le faire comme ça avec le type
<any>
si vous faites cela, vous n'obtiendrez pas cette erreur
OriginalL'auteur Cenk YAGMUR
À l'aide de la notation crochets à la place de la notation de point de référence
sidebar['content']
au lieu desidebar.content
permettra de résoudre le problème.La Type de vérification de la réponse section de l'angle de docs sur HttpClient mention de cela, bien qu'il n'est pas clair:
OriginalL'auteur Kevin Leary
Description De L'Erreur
pourquoi s'est Produite ?
Je pense que cette erreur est dans le fichier de service , chaque fois que vous faire http appel et cet appel renvoie à un Objet(json) ou un tableau d'Objets (json) , puis la vôtre http appel doit retourner Observables ou un Modèle de ce type de résultat
La maison.service.ts
Suppose , j'ai Post ci-dessus http appel , où je me connecter au serveur par le passage des données à l'intérieur de 'données' et cette requête me renvoie Objet de connexion (Json).Mais où u vu que je n'ai pas préciser observables ou modèle pour la tenue de résultat et si je accéder à l'Objet de résultat propriétés du composant.ts il dit résultat.somepropery n'existe pas sur {} .
Solutions
Première :
Remarque : N'oubliez pas d'importer des Observables
Deuxième :
Dans le second cas, vous devez définir l'Interface pour déclarer la Connexion des champs Objet et doit importer ici.
OriginalL'auteur Bhagvat Lande