2017-05-25 4 views
0

私はangular4アプリケーションを構築しています。私はカスタムフィルターパイプを書いています。私は一つの成分だけで私のプロパティ名ngFor、すべては学生のコンポーネントの例 1)のために異なっている中で、私が使用するようなフィルターパイプに使用することができます:統計コンポーネントにすべてのコンポーネントのフィルターパイプ

<ul> 
    <li *ngFor="let studentReport of studentReports | filter: term"> 
    </li> 
</ul> 

2)私はこれを持っていると私はしたいですここでまた私のフィルターパイプを使用します

<ul> 
    <li *ngFor="let statReport of statReports"> 
    </li> 
</ul> 

私のカスタムパイプは、私は前夜にそれを使用することができる何かに値を変更する必要があり、この

import { Pipe, PipeTransform } from '@angular/core'; 
@Pipe({ 
    name: 'filter' 
}) 
export class FilterPipe implements PipeTransform { 

    transform(studentReports: any, term: any): any { 

     //check search term if undefined 
     if(term == undefined) return studentReports; 
     //return updated array 

     return studentReports.filter(function(studentReport) { 
      return studentReport.name.toLowerCase().includes(term.toLowerCase()) 
     }); 
    } 

} 

のようなものですryコンポーネント..

誰かが私を助けてくれたら分かります。

+1

あなたの問題を説明してください、あなただけいただきました!間違っ –

+1

あなたが欲しいものを説明しただけではなく、ヘッドアップこのこと悪い習慣です:Angularには 'FilterPipe'や' OrderByPipe'が付いていないのが良い理由があります。これを読んでください:https://angular.io/docs/ts/latest/guide/pipes.html#!#no-filter-pipe。コンポーネントではなく、テンプレートで順序付けとフィルタリングを行う必要があります。 – mtx

+0

@mtxコメントありがとうございます。この記事では、「Angularチームと多くの経験豊富なAngular開発者は、フィルタリングとソートロジックをコンポーネント自体に移すことを強く推奨します」と述べています。 ..質問はどのように私は検索入力とコンポーネントにフィルタリングを移動することができますか? –

答えて

1

かかわらず、それが推奨されますかどうか、ここにあなたが使用できる汎用的なパイプであるの:

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

@Pipe({ 
    name: 'filterBy' 
}) 

export class FilterByPipe implements PipeTransform { 

    transform(value: any, args: string[]): any[] { 

    if (!args[0]) { 
     return value; 
    } 
    else if (value) { 

     return value.filter(item => { 

     // TODO: Allow args[1] to be null, therefore searching in all object properties 
     if ((typeof item[args[1]] === 'string' || item[args[1]] instanceof String) && (item[args[1]].toLowerCase().indexOf(args[0].toLowerCase()) !== -1)) { 
      return true; 
     } 
     }); 
    } 
    } 
} 
関連する問題