因此,我尝试构建一个自定义管道来在ngFor循环中搜索多个值的过滤器。我已经寻找了许多小时来寻找一个好的工作示例,其中大多数都是基于以前的构建,似乎不起作用。因此,我正在构建管道并使用控制台给我给予值。然而,我似乎无法让输入文本显示出来。
以下是我之前寻找工作示例的地方:
Angular 4 Pipe Filter
http://jilles.me/ng-filter-in-angular2-pipes/的
https://mytechnetknowhows.wordpress.com/2017/02/18/angular-2-pipes-passing-multiple-filters-to-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条数据。我选择了一个管道,因为这是Angular建议你做的,因为他们最初在AngularJS中使用它们。我只是试图从本质上重新创建我们在AngularJS中使用的过滤管道我发现的所有选项都不起作用,或者来自Angular以前的版本。
如果你需要我的代码中的任何东西,让我知道。
7条答案
按热度按时间zc0qhyus1#
我必须在我的本地实现搜索功能,这里是更新您的代码。请这样做。
这是我需要更新的代码。
目录结构
字符串
创建管道命令运行
型
component.html
型
component.js
注:在这个文件中,我必须使用虚拟记录的实施和测试的目的。
型
模块.ts
型
pipe.ts
型
我希望你得到管道功能,这将帮助你。
l7mqbcuq2#
简单的filterPipe for Angular 2+
字符串
这里是HTML
型
在HTML中,PropName是虚拟文本。使用任何对象属性键代替PropName。
kxxlusnw3#
按照以下代码使用自定义筛选器筛选表中的特定列而不是所有列
文件名.组件.html
字符串
文件名.component.ts
型
filename.pipe.ts
创建一个类,用PipeTransform实现它,这样我们就可以用transform方法编写自定义filter。
型
iugsix8n4#
虽然我迟到了,但我希望这对某些人有帮助。我已经为Angular V6+做了一个自定义的搜索管道(目前也在16中构建)。
Stackblitz Link
pure-search.pipe.ts搜索管道**
字符串
将其更改为
型
请确保您传递的对象是单级别的。此筛选器已在超过3000条记录中顺利运行。
ee7vknir5#
这里是简单的解释,以创建自定义管道..作为可用的管道不支持它.我发现这个解决方案here..很好地解释了它
创建管道文件advanced-filter.pipe
字符串
在这里,数组-将数据数组传递给您的自定义管道对象-将数据对象通过使用该对象,您可以添加条件来过滤数据
我们已经添加了条件
obj.status === args[0]
,以便数据将在.html文件中传递的状态上进行过滤现在,在组件的module.ts文件中导入并声明自定义管道:
型
在.html文件中使用创建的自定义角管道
型
kfgdxczn6#
我能想到的一个简单的类似Java的逻辑,从 typescript 的Angular 看可能不是很紧凑,如下所示:
个字符
llmtgqce7#
您可以在输入框的(input)事件上使用给定的函数
字符串
希望有帮助。