“Le Type "Objet" n'est pas assignable à type de” avec de nouveaux HttpClient / HttpGetModule
Suivantes Officielle de Google Angulaire 4.3.2 doc ici, j'ai été capable de faire un simple get
demande auprès d'un fichier json. Je voulais pratiquer frapper un véritable point de terminaison de JSON espace réservé du site, mais je vais avoir de la difficulté à décider quoi mettre dans la .subscribe()
de l'opérateur. J'ai fait un IUser
interface pour capturer les champs de la charge utile, mais la ligne avec .subscribe(data => {this.users = data})
envoyait le message d'erreur Type 'Object' is not assignable to type 'IUser[]'
. Quelle est la bonne façon de gérer cela? Semble assez basique mais je suis un noob.
Mon code est ci-dessous:
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { IUsers } from './users';
@Component({
selector: 'pm-http',
templateUrl: './http.component.html',
styleUrls: ['./http.component.css']
})
export class HttpComponent implements OnInit {
productUrl = 'https://jsonplaceholder.typicode.com/users';
users: IUsers[];
constructor(private _http: HttpClient) { }
ngOnInit(): void {
this._http.get(this.productUrl).subscribe(data => {this.users = data});
}
}
Parce que les données n'a pas le type IUsers, essayez cette
Merci @cyrix .
.subscribe((data: IUsers) => ...
ou this.users = data as any;
Merci @cyrix .
data as any
a fait le tour de mon cas.OriginalL'auteur midnightnoir | 2017-07-31
Vous devez vous connecter pour publier un commentaire.
En fait, vous avez quelques options ici, mais utiliser des génériques pour convertir le type que vous êtes enceinte.
Aussi je vous recommande d'utiliser async tuyaux dans votre modèle auto s'abonner /se désabonner, surtout si vous n'avez pas besoin de fantaisie logique, et vous êtes tout simplement la cartographie de la valeur.
OriginalL'auteur Mark Pieszak - Trilon.io
Je suis sur l'angle de la doc de l'équipe et un élément todo est de changer ces docs pour montrer les "meilleures pratiques" de façon à accéder à Http ... qui est par l'intermédiaire d'un service.
Voici un exemple:
Le composant ressemblerait alors à ceci:
Super! Juste pour info ... le cours utilise actuellement l'ancien Service Http. Nous travaillons sur une mise à jour maintenant.
Roger, je suis en train d'essayer de le comprendre, de mon propre chef comme un exercice 😛
Petite question, quelle est la raison pour typcast url api après http.obtenir? Je l'ai essayé sans, et il renvoie toujours bon de données.
Je l'ai remarqué aussi. Je suppose que c'est à cause de la fonction de type de retour que nous avons définie. Si nous enlevons également que, alors les données est tout Observables(objet). Il semble donc que nous pourrions aller avec le transtypage ou la méthode de type de retour. J'aime avoir les deux pour plus de clarté.
OriginalL'auteur DeborahK