2017-10-06 1 views
0

Je travaille sur un projet de pile MEAN, et j'ai un problème étrange avec Angular 4. Cette méthode WAS fonctionnait dans le passé, mais pas maintenant. J'essaye de supprimer un utilisateur de la partie frontale. La page envoie un appel à userService.delete(), la fonction envoie une requête au backend qui supprime l'utilisateur avec succès. Il retourne ensuite un 200 avec "détruit avec succès" comme réponse. Je peux voir la réponse dans mon navigateur, mais le rappel de promesse n'est jamais appelé pour gérer la réponse. Exemple:Angular4 Le rappel de promesse n'est pas appelé

Appeler le service:

this.userService.deleteUser(localStorage.getItem('email'),localStorage.getItem('auth_token'), this.userId) 
     .then(response => { 
     console.log('got response') // <== never prints 
     if (response == "successfully destroyed") { 
      window.location.href = `/admin/users`; 
     } else { 
      alert("could not delete successfully") 
     } 
     }) 

fonction UserService:

deleteUser(email:string, auth_token:string, id:string): Promise<any> { 
const body = {email: email, auth_token: auth_token, id:id}; 
return this.http.post('/api/users/delete', body) 
    .toPromise() 
} 

Le .then ne sera jamais appelé et la page ne fait rien.

Merci à l'avance pour toute aide :)

+0

Vérifiez si vous avez une erreur sur le serveur. – Avi

+0

Voyez-vous des erreurs dans la console? Cela pourrait-il être un problème de la SCRO? –

+0

Quelle version d'Angular vous utilisez car dans angulaire 4+, vous ne pouvez pas utiliser la méthode 'toPromise()' sur http.post'? – asmmahmud

Répondre

0

a trouvé la réponse moi-même.

Il s'avère, pour une raison quelconque, que si vous essayez de passer une chaîne par lui-même et non dans un objet/dictionnaire, le rappel de promesse ne sera pas appelé. je devais faire mon retour du serveur:

{ 
    status: "successfully destroyed" 
} 

au lieu de simplement "successfully destroyed"

espère que cela aide quelqu'un d'autre!