2017-09-20 1 views
0

Je suis essayer de construire ma propre grille de données sur mesure, il fonctionne, problème est après avoir effectué des actions telles que l'effacement des données pas mis à jourles données ne sont pas mises à jour après l'exécution d'une action dans angular4?

my.component.html

<grid [data] = "data" [columns]="columns" 
    (actionChanged) = "onChangeAction($event)"> </grid> 

mon. component.ts

onChangeAction (actionData) { 
    console.log(actionData, 'action change data in main component') 
    if (actionData.action === 'delete') { 
      this.delete (actionData) 
    } 

    if (actionData.action === 'add') { 
     this.add (actionData) 
    } 
    } 
    delete (actionData) { 
    console.log(actionData, 'delete function calll', this.data.length) 
    const index: number = this.data.indexOf(actionData.rowData.name); 
    if (index === -1) { 
     this.data.splice(index, 1); 
    }; 
    console.log(this.data.length, index) 
    } 
    add (actionData) { 
    console.log(actionData, 'add function calll') 
    } 

** grid.ts **

@Output() public actionChanged: EventEmitter<any> = new EventEmitter(); 

    public updateAction (row, action) { 
    console.log(row, 'Row', action) 
    let actionData = { 
      rowData: row, 
      action: action 
     } 
    this.actionChanged.emit(actionData); 
} 

Je passe des données à l'aide de la grille @input() obtenir des données de la grille @output()

Je reçois des données de la grille à my.component parfaite, probelm est après avoir effectué de suppression des données d'action est pas mis à jour à la grille.

S'il vous plaît quelqu'un peut m'aider. Merci à l'avance

+0

assurez-vous d'écouter les changements en mettant en œuvre une méthode ngOnChanges – mareks

+0

oui, je tentai onChanges, événements Docheck, avec ce gros problème résolu 50 %, les données sont mises à jour après l'action de suppression, mais après l'exécution des données de la fonction de filtre n'est pas mise à jour – Rahiman

+0

ngOnChanges() dans grid.ts écoutera les modifications si quelque chose a changé dans les propriétés @Input(). Dans votre composant principal, onChangeAction() met à jour la valeur des données, seulement ngOnChanges() se déclenche, donc à la place de this.data.splice() faites this.data = this.data.splice() – JayDeeEss

Répondre

0

Vous devez ajouter une méthode à grid.ts

ngOnChanges(changes: SimpleChanges) { 
    // changes holds the new data 
    // so you could set 
    // this.data = changes; 
} 
+0

ici ce qui est (change : SimpleChanges) – Rahiman