0

J'essaie de supprimer un élément de mon appli cli angulaire. J'ai utilisé l'alerte douce comme une alerte et je veux supprimer un élément de la liste. Voici un code pour ça. Ce code est dans un fichier de type.Angular 2 - La fonction de rappel d'alerte douce ne fonctionne pas

import { AuthenticationService } from '../../../services/authentication.service'; 
declare var swal: any; 
export class AdminUsersComponent implements OnInit { 

    constructor(
     private authService: AuthenticationService, 
    ) { } 

    deleteUser(id) { 
     let userData = { 
      user_id: id 
     }; 
     swal({ 
      title: "Are you sure?", 
      text: "You will not be able to recover this!", 
      type: "warning", 
      showCancelButton: true, 
      confirmButtonColor: "#DD6B55", 
      confirmButtonText: "Yes, delete it!", 
      closeOnConfirm: false 
     }, function(){ 
      this.authService.deleteUser(userData).subscribe(data => { 
       // response 
      }); 
     }); 

    } 
} 

Le problème est quand je confirmer la suppression, il me donne l'erreur que « this.authserivce » est non défini. Il fonctionne correctement si je n'utilise pas d'alerte douce comme confirmation. Je devine que je dois passer le paramètre dans la fonction de rappel mais ne sais pas ce que je devrais passer. Alors comment je peux résoudre ça?

+0

Pouvez-vous envoyer le code entier? Qu'est-ce que 'authService.deleteUser' – Manav

+0

@manav J'ai mis à jour le code. jetez un oeil – parth

+0

peut-être sweetalert est en train d'écraser 'this'? – Manav

Répondre

0

1ère solution: Utilisez le arrow function parce que la liaison d'expression de la fonction this avec sa propre this

swal({ 
     title: "Are you sure?", 
     text: "You will not be able to recover this!", 
     type: "warning", 
     showCancelButton: true, 
     confirmButtonColor: "#DD6B55", 
     confirmButtonText: "Yes, delete it!", 
     closeOnConfirm: false 
    }).then((result) => { 
     if (result.value) { 
      this.authService.deleteUser(userData).subscribe(data => { 
       // response 
      }); 
     } 
    }); 

2ème solution:

let that = this; 
swal({ 
     title: "Are you sure?", 
     text: "You will not be able to recover this!", 
     type: "warning", 
     showCancelButton: true, 
     confirmButtonColor: "#DD6B55", 
     confirmButtonText: "Yes, delete it!", 
     closeOnConfirm: false 
    }).then(function(result) { 
     if (result.value) { 
      that.authService.deleteUser(userData).subscribe(data => { 
       // response 
      }); 
     } 
    }); 
+1

Merci beaucoup. Il fonctionne maintenant. – parth