2017-06-30 3 views
0

Je suis un comportement étrange dans l'ag-grille pour angulaire et je ne sais pas si je fais quelque chose de mal ou c'est un bug.ag-grille mauvais ordre de rangée angulaire après l'initialisation

Après l'initialisation aggrid avec

this.gridOptions = { 
    enableSorting: true, 
    rowHeight: 50, 
    suppressDragLeaveHidesColumns: true, 
    enableColResize: true, 
    domLayout: 'autoHeight', 
    rowSelection: 'single', 
}; 

et

<ag-grid-angular 
    #agGrid 
    [rowData]="articleArray" 
    [gridOptions]="gridOptions" 
    (cellClicked)="showDetails($event)" 
    (gridReady)="onGridReady()" 
    (modelUpdated)="onModelUpdated()" 
    (gridSizeChanged)="sizeToFit()" 
    ></ag-grid-angular> 

Et obtenir l'ordre donné lieu de lignes de la grille par

updateArticleOrder() { 
    const result: string[] = []; 
    this.gridOptions.api.forEachNodeAfterFilterAndSort(rowNode => result.push(rowNode.data.id)); 
    this.articleOrderChanged$.emit(result); 
    } 

Je remarque que l'ordre est différent du entrée d'origine utilisée dans [rowData]="articleArray". Pour être précis, 11 éléments ont été déplacés vers le bas de la grille et la grille commence à l'index d'origine 11. Pourquoi est-ce et comment puis-je l'éviter? Après le tri et updateArticleOrder() étant appelé à l'intérieur onModelUpdated() je reçois le bon ordre à nouveau, avec l'index 0 affiché lorsque je clique sur la première rangée.

[EDIT] Je remarque que je reçois ce problème que lors de l'initialisation du réseau. Lorsque mes mises à jour articleArray après la grille est déjà visible, this.gridOptions.api.forEachNodeAfterFilterAndSort me donne les nouveaux éléments dans le bon ordre.

Répondre

2

Ceci est probablement un bug qui provient de l'utilisation de [domLayout] = "'autoHeight'". En tant que solution temporaire, essayez de définir [rowBuffer] à un nombre élevé, par exemple [rowBuffer] = "10000"

+0

C'était tout! Merci beaucoup. – Phil