2017-09-13 54 views
0

你好我正在創建一個搜索管道的角度4從Json數據過濾公司名稱。搜索過濾器正在工作,但區分大小寫,我可以如何忽略來自搜索過濾器的區分大小寫。我只把與主題相關的代碼放在裏面。角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

您可以使用String.protoype.search()方法而不是indexOf()方法來檢查不區分大小寫的正則表達式。

所以你return聲明看起來是這樣的:

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

如果您在terms變量有特殊字符,如\,那麼你需要在你的過濾器,以考慮這一點。上述方法應適用於正常的字母數字變量terms

i in new RegExp(term, 'i')佔賬號不區分大小寫terms模式。

上面的代碼將允許任何值在任何company值。如果你想要更嚴格的檢查,你可以在上面的代碼片段中用這個:new RegExp('^' + terms + '$', 'i')代替RegExp構造函數。這些字符^ & $分別指定正則表達式模式的'開始'和'結束'。

更多關於searchregexp

+0

完美的作品非常感謝你。 :) – Akshay

0

您應該過濾長期價值爲:

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

這工作? –

+0

嗨,但它只是過濾小寫,例如,如果JSON值說'公司1'它過濾術語 - company1而不是Company1或COmpany1等,我想使它不區分大小寫 – Akshay

相關問題