UNPKG

w-ng5

Version:
133 lines (93 loc) 4.23 kB
# w-ng5 accelerator web components Angular Generic Filters to *ngFor # Objective Filter records of your listings with simple strings using a single field or multiple fields on plan objects. Filter also by using fields in non-plan structured objects by observing one or more attributes or sub-attributes of these objects by browsing their OGNL properties. # Details Details about this project and user tutorial ## Composition package * Generic Filter for using in directives ngFor ## How to install and configure For use this components, before, install this package with npm: npm install w-ng5 --save After, import module in app.module ... import { PipesModule } from 'w-ng5'; In the next step, add in declare section of app.module: imports: [ PipesModule, ... ] And, enjoy.... ## Sample use ### Filtering simple string <input type="text" [(ngModel)]="filtroString"> <ul> <li *ngFor="let s of getStrings() | filter:filtroString"> {{s}} </li> </ul> ### Filtering complex string - field 'Value' in level 2 <input type="text" [(ngModel)]="search"> <ul> <li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'n1.n2.valor2', value: search}]"> {{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}} </li> </ul> ### Filtering complex string - middle field - 'Value' in level 1 <input type="text" [(ngModel)]="search3"> <ul> <li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'n1.valor1', value: search3}]"> {{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}} </li> </ul> ### Filtering complex array simple - field 'Nome' level 0 <input type="text" [(ngModel)]="search2"> <ul> <li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'nome', value: search2}]"> {{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}} </li> </ul> ### Filtering in tree fields - field 'Valor' in level 2 or 'Valor' in level 1 or 'Nome' in level 0 <input type="text" [(ngModel)]="search5"> <ul> <li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'n1.n2.valor2', value: search5}, {field:'n1.valor1', value: search5}, {field:'nome', value: search5}]"> {{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}} </li> </ul> ### Filtering nonexistent field - 'Valor' in nonexistent level 3 <input type="text" [(ngModel)]="search4"> <ul> <li *ngFor="let s of getComplexTypesExtends() | filter:[{field:'n1.n2.n3.valor3', value: search4}]"> {{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}} </li> </ul> ### Filtering using inject FilterPipe in constructor of component #### TypeScript method: Define a provider: // Import component to use in this code import { FilterPipe } from 'w-ng5'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'], providers: [FilterPipe] }) If your prefer, import component in the provider section of app.module Then import the pipe into the component constructor ... constructor(private pipe: FilterPipe) {} And, create a method 'dataSource(param)' that will return a array of data to view public dataSource(textFilter) { const r = this.pipe.transform(this.getComplexTypesExtends(), [{field: 'n1.n2.valor2', value: textFilter}]); return r; } ... after, using this method 'dataSource(param)' on ngFor directive in the template html: <input type="text" [(ngModel)]="search5"> <ul> <li *ngFor="let s of dataSource(search5)"> {{s.nome}} - {{s.idade}} - {{s.n1.valor1}} - {{s.n1.n2.valor2}} </li> </ul> This component work with infinite attribute level... # Project info - source code This project is stored in [WNg5](https://github.com/wquintanilhadasilva/w-ng5) and was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.6.6.