所以我试图构建一个自定义管道来在 ngFor 循环中执行多个值的搜索过滤器。我已经找了几个小时来寻找一个很好的工作示例,其中大部分都是基于以前的构建并且似乎不起作用。所以我正在构建管道并使用控制台为我提供值。但是,我似乎无法显示输入文本。
以下是我以前寻找工作示例的地方:
http://jiles.me/ng-filter-in-angular2-pipes/
https://plnkr.co/edit/vRvnNUULmBpkbLUYk4uw?p=preview
https://www.youtube.com/results?search_query=filter+search+angular+2
https://www.youtube.com/watch?v=UgMhQpkjCFg
这是我目前拥有的代码:
组件.html
<input type="text" class="form-control" placeholder="Search" ngModel="query" id="listSearch" #LockFilter>
<div class="panel panel-default col-xs-12 col-sm-11" *ngFor="let lock of locked | LockFilter: query">
<input type="checkbox" ngModel="lock.checked" (change)="openModal($event, lock)" class="check" id="{{lock.ID}}">
<label for="{{lock.ID}}" class="check-label"></label>
<h3 class="card-text name" ngModel="lock.name">{{lock.User}}</h3>
<h3 class="card-text auth" ngModel="lock.auth">{{lock.AuthID}}</h3>
<h3 class="card-text form" ngModel="lock.form">{{lock.FormName}}</h3>
<h3 class="card-text win" ngModel="lock.win">{{lock.WinHandle}}</h3>
</div>
管道.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'LockFilter'
})
export class LockFilterPipe implements PipeTransform {
transform(locked: any, query: string): any {
console.log(locked); //this shows in the console
console.log(query); //this does not show anything in the console when typing
if(!query) {
return locked;
}
return locked.filter((lock) => {
return lock.User.toLowerCase().match(query.toLowerCase());
});
}
}
我已将管道导入module。
我对 Angular 4 还是比较新的,并且正在尝试弄清楚如何使这项工作有效。无论如何感谢您的帮助!
我想我需要更具体。我已经在 JS 中构建了一个过滤器搜索,它不会过滤所有选项,这就是我想要做的。不仅仅是过滤用户名。我正在过滤所有 4 条数据。我选择了 Pipe,因为这是 Angular 建议你做的,因为他们最初在 AngularJS 中使用它们。我只是想从根本上重新创建我们在 AngularJS 中的过滤器管道,他们为了性能而删除了它们。我发现的所有选项都不起作用,或者来自以前的 Angular 版本。
如果您需要我的代码中的任何其他内容,请告诉我。