2017-08-02 1 views
1

J'utilise ag-grid avec angulaire 2.Mise à jour et suppression par menu contextuel personnalisé Ag-Grid

J'ai créé un menu contextuel personnalisé avec des boutons de suppression et de mise à jour. Dans un scénario, l'utilisateur sélectionne une ou plusieurs lignes, puis clique avec le bouton droit de la souris et clique sur le bouton Supprimer ou Mettre à jour.

Ces boutons appellent certaines fonctions avec les options gridOptions afin d'obtenir les lignes sélectionnées.

Cependant; lorsque je clique sur les boutons de suppression ou de mise à jour, j'ai une erreur qui indique que this.gripOptions est indéfini.

Existe-t-il un exemple ou une documentation à ce sujet? Comment puis-je résoudre ce problème?

Merci pour les réponses

var gridOptions = { 
     columnDefs: columnDefs, 
     enableRangeSelection: true, 
     getContextMenuItems: getContextMenuItems, 
     allowContextMenuWithControlKey: true 
    }; 
    getContextMenuItems(params) { 
     var result = [ 
      { // custom item 
       name: 'Delete', 
       action: function() { this.delete()); } 
      } 

    return result; 
    } 

    delete() { 
     var selectedRows = this.gridOptions.api.getSelectedRows(); 
    } 
+0

pouvez-vous ajouter des extraits de code pour aider au débogage ou recherchez-vous simplement une source générale? – Surreal

+0

Bien sûr, je peux ajouter come code cependant; il semble que c'est un problème général avec ag-grid. Pour autant que je sache, le menu contextuel personnalisé est préparé et ne peut pas entrer en contact avec un autre code extérieur. J'ai essayé d'utiliser une variable que j'ai définie dans .ts mais encore une fois, l'erreur indique que la variable est indéfinie. –

Répondre

0

C'est parce que vous avez déclaré gridOptions comme une variable, non pas comme une partie de cela. Ce que vous pouvez faire est:

var vm = this; 
vm.gridOptions={...} 

[...]

delete() { 
    var selectedRows = vm.gridOptions.api.getSelectedRows(); 
} 

De cette façon, vous ne rapportez pas « ce », qui est difficile à gérer en Javascript, mais vous avez un certaine référence au contexte local

+0

merci pour la réponse! J'ai résolu mon problème avec cette réponse; https://stackoverflow.com/a/45374506/7826844 Cependant; votre réponse est également correcte! –