2016-11-11 48 views
0

经过几个小时的搜索stackoverflow和谷歌我没有找到我正在寻找什么,我找到了一些让我有一个替代解决方案的想法。Angular2使用RegExp过滤管道对象数组?

对象例如:

items = [ 
{ 
    title: "This is title", 
    email: "[email protected]", 
    status: "confirmed" 
}, 
{ 
    title: "This another one", 
    email: "[email protected]", 
    status: "pending" 
{  
    title: "Just a random string", 
    email: "[email protected]", 
    status: "pending" 
{  
] 

分辨率:

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

 
@Pipe({ 
 
    name: 'filter', 
 
    pure: false 
 
}) 
 
export class FilterPipe implements PipeTransform { 
 

 
    transform(value: any, args?: any): any { 
 
    if(args == '') { return value; } 
 

 
    let query = args.toLowerCase(); 
 
    return value.filter(task => 
 
     task.title.toLowerCase().indexOf(query) > -1 || 
 
     task.email.toLowerCase().indexOf(query) > -1 || 
 
     task.status.toLowerCase().indexOf(query) > -1 
 

 
    ); 
 
    
 
    } 
 
}

<div *ngFor="item of (items | filter:'this is') "> 
 
    {{item | json}} 
 
</div>

这会给我:

{title: "This is title", email: "[email protected]",status: "confirmed"} 

它的工作原理是,但我的意图是使之与正则表达式的工作,我都试过,但由于某种原因,当我使用VAR东西,我得到了一个错误=新的RegExp(//一些规则)。

任何想法是非常感激。

+0

你得到什么错误? –

+0

新事物不是功能。 –

回答

1

试试这个

import {Pipe} from 'angular2/core'; 

// Tell Angular2 we're creating a Pipe with TypeScript decorators 
@Pipe({ 
    name: 'RegexPipe' 
}) 
export class RegexPipe { 

    transform(value, args?) { 
    // ES6 array destructuring 
    let [pattern] = args; 
    return value.filter(task => { 
     reg = new Regex(pattern); 
     found = reg.test(task.title); 
     return found; 
    }); 
    } 

} 

<div *ngFor="item of (items | RegexPipe:'/this is (.)*/') "> 
    {{item | json}} 
</div> 
相关问题