filter.pipe.ts 656 B

123456789101112131415161718192021
  1. import { Injectable, Pipe, PipeTransform } from '@angular/core';
  2. @Pipe({
  3. name: 'filter',
  4. })
  5. @Injectable()
  6. export class FilterPipe implements PipeTransform {
  7. transform<T>(items: T[], field: string, value: string, caseSensitive: boolean): T[] {
  8. if (!items) { return []; }
  9. if (!value || value.length === 0) { return items; }
  10. try {
  11. const reg = new RegExp(value, `${caseSensitive ? '' : 'i'}g`);
  12. const results = items.filter(it => it[field] && value && it[field].match(reg));
  13. return results.length > 0 ? results : [undefined];
  14. } catch (e) {
  15. return [];
  16. }
  17. }
  18. }