所以我正在尝试构建一个自定义管道来对ngFor循环中的多个值进行搜索过滤 . 我已经花了好几个小时才找到一个好的工作示例,其中大多数是基于以前的版本,似乎没有用 . 所以我正在构建Pipe并使用控制台为我提供值 . 但是,我似乎无法显示输入文本 .
以下是我以前寻找工作示例的地方:
http://jilles.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
这是我目前的代码:
component.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>
pipe.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());
});
}
}
我已将管道导入模块 .
我对Angular 4仍然有点新,我正在试图弄清楚如何使这项工作 . 无论如何,谢谢你的帮助!
我想我需要更具体一点 . 我已经在JS中构建了一个不过滤所有选项的过滤搜索,这正是我想要做的 . 不只是过滤用户名 . 我正在过滤所有4个数据 . 我选择了一个Pipe,因为这是Angular建议你做的,因为他们最初在AngularJS中使用它们 . 我只是想尝试基本上重新创建我们在AngularJS中为了性能而移除的过滤管道 . 我发现的所有选项都不起作用,或者来自以前的Angular版本 .
如果您需要我的代码中的任何其他内容,请告诉我 .
4 回答
我必须在我的本地实现搜索功能,这里更新了你的代码 . 请这样做 .
这是我必须更新的代码 .
directory Structure
command run for creating pipe
component.html
component.js
注意:在此文件中,我必须使用虚拟记录进行实现和测试 .
module.ts
pipe.ts
我希望你能获得管道功能,这将对你有所帮助 .
Angular 2的简单filterPipe
这是HTML
在HTML中 PropName 是虚拟文本 . 代替 PropName 使用您的任何对象属性键 .
以下是创建自定义管道的简单说明 . 可用管道不支持它 . 我找到了这个解决方案here ..很好地解释了它
创建管道文件advanced-filter.pipe
这里,array - 将数据数组传递给你的自定义管道obj--将使用该对象作为数据对象,你可以添加条件来过滤数据
我们添加了条件
obj.status === args[0]
,以便数据将获取在.html文件中传递的状态的过滤器现在,在组件的module.ts文件中导入并声明自定义管道:
在.html文件中使用创建的自定义角度管道
You can use the given function instead on the (input) event of your input box
希望能帮助到你..