0

我正在尝试构建一个搜索字段来过滤我的表格行,但我遇到了一些问题,因为我在管道中的“值”是未定义的。

这是我所拥有的:

管道:

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

1 回答 1

0

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

于 2017-01-23T20:22:38.360 回答