ag-grid - отфильтровать строку в виде числового значения c без изменения типа данных - PullRequest
1 голос
/ 09 января 2020

У меня есть таблица ag-grid со столбцом, определенным следующим образом:

{ headerName: 'Population', field: 'properties.population', sortable: true, filter: 'agNumberColumnFilter'}

Данные, которые я получаю для населения, представляют собой строку со значением цифры c внутри, например:

[
{
"properties": {
        "state": "Alabama",
        "name": "Montgomery",
        "population": "199518"
      }
},
{
"properties": {
        "state": "Alaska",
        "name": "Juneau",
        "population": "32094"
      }
}
]

Это означает, что фильтр не будет работать.

Я обошел это, изменив данные в компоненте

this.data.forEach(item => {item.properties.population= Number(item.properties.population)});

Есть ли другое решение в области ag-grid, чтобы изменить поведение фильтра в filterParams или что-то еще, чтобы избежать этой манипуляции с данными?

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Мне удалось решить это с помощью valueGetter в столбце def

{ headerName: 'Population', 
field: 'properties.population', 
sortable: true, 
filter: 'agNumberColumnFilter',
valueGetter: (params) => { return parseInt(params.data.population) }
}

Дополнительная информация о valueGetter в документации ag-grid: https://www.ag-grid.com/javascript-grid-value-getters/#example -getters-and-formatters

0 голосов
/ 09 января 2020

Попробуйте так:

data:any = [
    {
      properties: {
        state: "Alabama",
        name: "Montgomery",
        population: "199518"
      }
    },
    {
      properties: {
        state: "Alaska",
        name: "Juneau",
        population: "32094"
      }
    }
  ];

  constructor() {
    this.data.forEach(item => {
      item.properties.population = Number(item.properties.population)
    });
  }

Рабочая демоверсия

...