2016-11-11 3 views
0

После нескольких часов поиска в stackoverflow и google я не нашел то, что искал, я нашел что-то, что дало мне представление об альтернативном решении. Пример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"} 

Он работает, как есть, но мое намерение состояло в том, чтобы заставить его работать с RegExp, я пытался, но по какой-то причине, я получил сообщение об ошибке, когда я уаг что-то = новый 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> 
Смежные вопросы