2016-11-04 7 views
0

私のプロジェクトには検索パイプがあります。それはテーブルに適用されます。テーブルには、製品名、カテゴリ、数量などの多くの列があります。パイプはすべてのフィールドを検索し、結果をフィルタリングします。大文字と小文字が区別され、大文字と小文字を区別しないようにしたい。 私がMobileと入力すると結果が表示されますが、mobileと入力すると結果が表示されません。角度2 - パイプを使用した非人為的な検索

Search.pipe.ts

import { Pipe, PipeTransform } from '@angular/core'; 
import {isObject} from "rxjs/util/isObject"; 
import {isEmpty} from "rxjs/operator/isEmpty"; 
import {empty} from "rxjs/Observer"; 
@Pipe({ 
    name: 'search' 
}) 
export class SearchPipe implements PipeTransform 
{ 
    transform(input, searchString) 
    { 
     if (input == null) return input; 
     return input.filter(this.compareWithAllFields, searchString); 
    } 

    compareWithAllFields(value, index) 
    { 
     var fields = Object.keys(value); 
     for (let i = 0; i < fields.length; i++) 
     { 
      if (value[fields[i]] != null) 
      { 
       if (isObject(value[fields[i]])) 
       { 
        var childFields = Object.keys(value[fields[i]]); 
        if (childFields.length > 0) 
        { 
         for (let j = 0; j < childFields.length; j++) 
         { 
          if ((value[fields[i]][childFields[j]] + "").indexOf(this.toString()) !== -1) 
          { 
           return true; 
          } 
         } 
        } 
       } 
       if ((value[fields[i]] + "").indexOf(this.toString()) !== -1) 
       { 
        return true; 
       } 
      } 
     } 
     return false; 
    } 
} 

入力フォーム

<input placeholder="Enter Product Details to Search" class="form-control input-lg" type="text" #searchProduct 
           (keyup)="0"> 

使用

<tr *ngFor="let product of products | search:searchProduct.value;let serial = index"> 

答えて

1

勝利のための:

compareWithAllFields(value, index) 
{ 
    var fields = Object.keys(value); 
    for (let i = 0; i < fields.length; i++) 
    { 
     if (value[fields[i]] != null) 
     { 
      if (isObject(value[fields[i]])) 
      { 
       var childFields = Object.keys(value[fields[i]]); 
       if (childFields.length > 0) 
       { 
        for (let j = 0; j < childFields.length; j++) 
        { 
         if ((value[fields[i]][childFields[j]] + "").toLowerCase().indexOf(this.toString().toLowerCase()) !== -1) 
         { 
          return true; 
         } 
        } 
       } 
      } 
      if ((value[fields[i]] + "").toLowerCase().indexOf(this.toString().toLowerCase()) !== -1) 
      { 
       return true; 
      } 
     } 
    } 
    return false; 
} 

参考:今 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase

+0

作品。ありがとう – usmanwalana

関連する問題