2017-09-13 5 views
0

こんにちは私はangle4でJson Dataのフィルター会社名を検索パイプを作成しています。検索フィルタは機能していますが、大文字と小文字が区別されます。検索フィルタから大文字と小文字の区別を無視する方法はありますか。私は主題に関連するコードだけを入れています。角4の大文字と小文字を区別しないパイプによる検索結果

マイパイプコード -

import { Pipe, PipeTransform } from '@angular/core'; 
import { JobsService } from '../services/jobs.service'; 

@Pipe({ 
    name: 'filter', 
    pure: false 
}) 
export class FilterPipe implements PipeTransform { 
transform(items: any[], term): any { 
    console.log('term', term); 

    return term 
     ? items.filter(item => item.company.indexOf(term) != -1) 
     : items; 
    } 
} 

検索ボックス -

<input type="text" [(ngModel)]="term" name="term"> 

データ -

<div *ngFor="let joblist of jobList | filter: term"> 
    {{joblist.company}} 
</div> 

答えて

1

indexOf()メソッドの代わりにString.protoype.search()メソッドを使用すると、大文字と小文字を区別しない正規表現をチェックすることができます。

だからあなたreturnステートメントは次のようなものです

return term 
? items.filter(item => item.company.search(new RegExp(term, 'i')) !== -1) 
: items; 

あなたterms変数に\などの特殊文字を持っている場合は、あなたのフィルターで、同様にそのために考慮する必要があります。上記の方法は、通常の英数字のterms変数に対して機能するはずです。

inew RegExp(term, 'i')は大文字小文字を区別しないtermsパターンを考慮しています。

上記のコードでは、termの任意の値を持つcompanyの値を使用します。より厳密なチェックが必要な場合は、RegExpコンストラクタを上記のコードスニペットのnew RegExp('^' + terms + '$', 'i')に置き換えることができます。これらの文字は、^ & $それぞれ正規表現パターンの '開始'と '終了'を指定します。

searchregexpの詳細。

+0

。 :) – Akshay

0

あなたがされる用語の値をフィルタする必要があります。

...term.toLowerCase().company... 
+0

これは動作しますか? –

+0

こんにちは、jsonの値が 'company1'と表示されている場合、Company1やCOmpany1などではなくterm-company1でフィルタリングされている場合など、大文字と小文字を区別しないようにしたい場合は、小文字のみをフィルタリングします。 – Akshay

関連する問題