components icon indicating copy to clipboard operation
components copied to clipboard

Relax MatTableDataSource’s filter to be of type “{}”

Open paulferaud opened this issue 6 years ago • 5 comments

Feature Description

Relax MatTableDataSource.filter to accept {}. Right now, it is restricted to string. This would allow much easier custom filtering on multiple dimensions.

Use Case

When the filter is “only” a string, it makes it very difficult to “structurally” filter a table on multiple dimensions, even when customizing filterPredicate . Some recommendations on internet include:

  • passing a JSon object, and parsing the JSon filterPredicate, for each and every row: http://nataliesmith.ca/blog/angular-material-filter-table
  • everything in this bug thread: https://github.com/angular/components/issues/6178

While it works, it’s also a gratuitous workaround: It turns out that at no point does MatTableDataSource actually require filter to be a string: Whatever gets passed to filter just gets piped “as-is” to filterPredicate.

Here is a simple fork of “Table with filtering” that filters on different columns individually, where all I did was pass my complex object, while not respecting : https://stackblitz.com/edit/table-filtering-multiple-filters-example?file=app/table-filtering-example.html https://table-filtering-multiple-filters-example.stackblitz.io/

Caveats

It would still be up to the caller to make sure that their filter object is homogeneous with their filterPredicate object.

paulferaud avatar May 24 '19 18:05 paulferaud

Any chance we could prioritize this? It’s an absurdly simple change that would solve a problem that just keeps coming up and up and up:

  • https://github.com/angular/components/issues/13465
  • https://github.com/angular/components/issues/10178
  • https://github.com/angular/components/issues/9321
  • https://github.com/angular/components/issues/6178

paulferaud avatar Dec 02 '19 18:12 paulferaud

Any update on this issue?

salemdar avatar Feb 18 '21 11:02 salemdar

Just a heads up that we kicked off a community voting process for your feature request. There are 20 days until the voting process ends.

Find more details about Angular's feature request process in our documentation.

angular-robot[bot] avatar Feb 21 '22 15:02 angular-robot[bot]

Thank you for submitting your feature request! Looks like during the polling process it didn't collect a sufficient number of votes to move to the next stage.

We want to keep Angular rich and ergonomic and at the same time be mindful about its scope and learning journey. If you think your request could live outside Angular's scope, we'd encourage you to collaborate with the community on publishing it as an open source package.

You can find more details about the feature request process in our documentation.

angular-robot[bot] avatar Mar 13 '22 15:03 angular-robot[bot]

this is literally a bug. this doesn't need votes! when you have FormGroup, valueChanges are in object type. If you can't even handle your own feature, that is bug! please fix it already!

ayhanyildiz avatar Nov 21 '22 15:11 ayhanyildiz