2017-01-23 2 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); 
    } 

Все данные правильно заполненного в моем шаблоне, проблема, когда я попробуйте выполнить поиск. После отладки я заметил, что значение параметра значения в моей трубе не определено.

Вот шаблон:

<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

по каким-то причинам я могу только найти числовое значение, любую идею почему? –

Смежные вопросы