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
assurez-vous d'écouter les changements en mettant en œuvre une méthode ngOnChanges – mareks
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
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