labs-scnm
5/31/2016 - 12:48 AM

Search on pipe in Angular2

Search on pipe in Angular2

import { Pipe, PipeTransform, Injectable } from '@angular/core';

/**
 *
 *  <input [(model)]="query" type="text" />
 *  <ul>
 * 		<li *ngFor="let hero of heroes | search:query" >{{hero.name}}</li>
 *  </ul>
 */

@Pipe({
	name: 'search',
	pure: false
})
@Injectable()
export class search implements PipeTransform {
	 transform(items:any[], args:any):any[] {
		var isSearch = (data:any): bool => {
			var isAll = false;
			if(typeof data === 'object' ){
				for (var z in data) {
					if(isAll = isSearch(data[z]) ){
						break;
					}
				}
			} else {
				if(typeof args === 'number'){
					isAll = data === args;
				} else {
					isAll = data.toString().match( new RegExp(args, 'i') );
				}
			} 

			return isAll;
		};

		return items.filter(isSearch);
	}
}