En résumé: existe-t-il un moyen d'implémenter un comparateur personnalisé pour les filtres de colonne de nombres?Comparateur personnalisé de comparateur numérique
longue histoire:
J'utilise grille ag angulaire (2). Je donne mes propres composants pour les cellules dans mon ag-réseau:
let column = {
headerName: column.header,
field: column.id,
cellRendererFramework: DynamicComponent,
filter: this.convertFormatToFilterType(column.format) // returns "text", "number" or "date"
}
Afin de rendre les filtres obtenir des valeurs de mes cellules correctement je fournir des comparateurs personnalisés (celui-ci est pour les filtres de colonne de texte):
if (c.filter === "text")
c['filterParams'] = {
textCustomComparator: (filter, cell, filterText): boolean => {
var filterTextLowerCase = filterText.toLowerCase();
var valueLowerCase = cell.value.toString().toLowerCase();
switch (filter) {
case 'contains':
return valueLowerCase.indexOf(filterTextLowerCase) >= 0;
case 'notContains':
return valueLowerCase.indexOf(filterTextLowerCase) === -1;
case 'equals':
return valueLowerCase === filterTextLowerCase;
case 'notEqual':
return valueLowerCase != filterTextLowerCase;
case 'startsWith':
return valueLowerCase.indexOf(filterTextLowerCase) === 0;
case 'endsWith':
var index = valueLowerCase.lastIndexOf(filterTextLowerCase);
return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length);
default:
// should never happen
console.warn('invalid filter type ' + filter);
return false;
}
}
};
Vous pouvez voir que j'ai besoin d'accéder à la valeur de la cellule en utilisant "cell.value". Le code ci-dessus fonctionne bien. Ce qui me pose problème, c'est de fournir des fonctionnalités similaires pour les filtres de colonnes de nombres - ils ne semblent pas utiliser de comparateur personnalisé. Par conséquent, ce qui se passe, le filtre essaie d'accéder directement à la valeur de la cellule au lieu d'utiliser "cell.value".
Alors, existe-t-il un moyen de mettre en œuvre un comparateur personnalisé pour les filtres de colonnes numériques? Ou, sinon, d'une autre manière je peux obtenir la valeur de mes cellules correctement dans ce cas?