2017-01-23 10 views
0

テーブル行をフィルタリングする検索フィールドを作成しようとしていますが、パイプの "値"が未定義であるため、いくつか問題があります。ここでパイプでHTTP JSONコンテンツをフィルタリングする

は私が持っているものです。

パイプ:

@Pipe({ 
    name: 'filter', 
    pure: false 
}) 
export class SearchPipe implements PipeTransform { 
    transform(value, searchinput) { 
     if (!searchinput[0]) { 
      return value; 
     } else if (value) { 
      return value.filter(item => { 
       for (let key in item) { 
        if ((typeof item[key] === 'string' || item[key] instanceof String) && 
         (item[key].indexof(searchinput[0]) !== -1)) { 
         return true; 
        } 
       } 
      }); 
     } 
    } 

コンポーネント:

constructor(private _serverService: ServerService, private _router: Router) { } 

    errorMessage: string; 
    public servers: Server[]; 
    isLoading = true; 

    selectedServer: Server; 

    ngOnInit() { 
      this.getServers('qa'); 
    } 

    reloadServers(env) { 
     this.servers = null; 

     this.getServers(env); 
    } 

    getServers(env?) { 
     this._serverService.getServers(env) 
      .subscribe(
      value => { 
       this.servers = value; 
       this.isLoading = false; 
      }, 
      error => this.errorMessage = <any>error); 
    } 

すべてのデータが正しくとき、私に問題がある、私のテンプレートで満たされています検索しようとする。デバッグ後、私はパイプ内のvalueパラメータの内容が未定義であることに気付きました。ここで

はテンプレートです:

<input id="searchinput" class="form-control" type="text" placeholder="Search..." [(ngModel)]="searchinput" /> 

<div id="searchlist" class="list-group"> 
    <table class="table table-bordered table-hover "> 
     <thead> 
      <tr> 
       <th>Hostname</th> 
      </tr> 
     </thead> 
     <tbody> 
       <tr *ngFor="#server of servers | filter: searchinput"> 
        <td>{{server.MachineNameAlias}}</td> 
       </tr> 
      </tbody> 
    </table> 
</div> 

、ここではエラーです:

EXCEPTION: TypeError: item[key].indexof is not a function in [servers | filter: searchinput in [email protected]:40] 

答えて

0

機能がindexOf、ないindexofです。私はまだ残りを見ていませんでしたが、それはあなたのエラーを下に記載されているものです。

+0

私はそれを逃したとは思わない。ありがとうございました!それは今働いている。 –

+0

いくつかの理由で私は数だけの理由を調べることができますか? –