使用管道过滤 HTTP JSON 内容

Filter HTTP JSON content with pipe

我正在尝试构建一个搜索字段来过滤我的 table 行,但我遇到了一些问题,因为我的 "value" in pipe 未定义。

这是我的:

管道:

@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 MainServerPage@35:40]

函数是indexOf,不是indexof。我还没有看其余部分,但这就是导致您在底部列出的错误的原因。