Je pervers de 3 à 4 ioniques et continuez à rencontrer des problèmes avec mes services d'API. Dans ce cas particulier, j'essaie de récupérer des billets d'un utilisateur afin que je puisse les énumérer.
Malheureusement, chaque fois que je fais que je reçois le message d'erreur 'whoops', même si les billets sont extraites avec succès de l'API. En plus de cela, je ne peux pas sembler comprendre comment obtenir avec succès les billets renvoyés du service dans ma page; Je reçois actuellement un en haut de cela, les données ne peut pas lire la propriété 'puis' de l'erreur indéfinie code>. P> code> sont maintenant revenant comme Data: [Objet Object], [Objet d'objet] CODE> P> Ticket.Service H2>
ngOnInit() {
this.getSubmittedTickets();
}
getSubmittedTickets() {
this.ticketService.getSubmittedTickets()
.then(data => {
this.tickets = data;
console.log('tickets: '+this.tickets);
});
}
3 Réponses :
Le nom de la méthode dans votre service est getTickets () . Mais dans votre fichier TS, vous avez utilisé getSubmittedTickets () .
Le code de votre fichier TS doit être:
getSubmittedTickets() {
this.ticketService.getTickets()
.then(data => {
this.tickets = data;
console.log('tickets: '+this.tickets);
});
}
C'était juste une faute de frappe lors de la création de ce message; c'est correct dans le service.
vous devez convertir observable en promesse avec toPromise
getSubmittedTickets() {
let body = new FormData();
body.append('username', this.username);
body.append('password', this.password);
return this.http
.post(this.apiService.url, body)
.toPromise()
}
Renvoie La propriété 'subscribe' n'existe pas sur le type 'Promise . Basculé subscribe () sur puis () et reçu La propriété 'alors' n'existe pas sur le type 'void'
Le service doit renvoyer un Observable
getSubmittedTickets() {
this.ticketService.getSubmittedTickets()
.subscribe(data => {
this.tickets = data;
console.log('tickets: '+this.tickets);
});
}
et le composant appelle la méthode à partir du service puis s'abonne à la valeur renvoyée
getSubmittedTickets() {
let body = new FormData();
body.append('username', this.username);
body.append('password', this.password);
return this.http.post(this.apiService.url, body);
}
p>
Cela a fonctionné, mais console.log ('tickets:' + this.tickets); renvoie tickets: [object Object], [object Object]
Et quel est le problème avec le console.log? Il est probablement en train d'imprimer (d'enregistrer) un tableau d'objets. Ou c'est une chaîne?
Il imprime des tickets: [object Object], [object Object] au lieu du tableau