Created
July 8, 2016 05:26
-
-
Save nallwhy/a8716ba2fea481046e3000af7c640cbb to your computer and use it in GitHub Desktop.
[Angular2] SearchPipe
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// usage: {{ payments | search:'info.holder':holderSearchKey }} | |
import { Pipe, PipeTransform } from '@angular/core'; | |
@Pipe({ | |
name: 'search', | |
pure: false | |
}) | |
export class SearchPipe implements PipeTransform { | |
transform<T>(value: T[], propertyKey: string, searchKey: string, ignoreCase: boolean = true): T[] { | |
if (searchKey.length == 0 || !value) { | |
return value | |
} else { | |
if (ignoreCase) { | |
searchKey = searchKey.toLowerCase() | |
} | |
const propertyKeys = propertyKey.split('.') | |
let newValue = value.filter((each) => { | |
let property: any = each | |
propertyKeys.forEach((key) => { | |
if (property) { | |
property = property[key] | |
} | |
}) | |
if (typeof property === "string") { | |
if (ignoreCase) { | |
return property.toLowerCase().indexOf(searchKey) != -1 | |
} else { | |
return property.indexOf(searchKey) != -1 | |
} | |
} else return false | |
}) | |
return newValue | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
코멘트 드립니다.
1) 유지보수 관련
2) 성능광련
3) 네이밍관련
4) 기타
혹시 참고가 되실까 해서 제가 작성하여 둔 검색파이프 코드를 공유드립니다.
사용예
그럼 조금이나마 도움 되셨길 바라고 혹시 제가 드린 코멘트 중에 오류가 있거나 궁금하신 점은 언제든지 질문 주시기 바랍니다.
감사합니다.