作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我总共有 4 个字段来过滤表格内容。如果我在过滤器部分中放置 2 个值,它会起作用,如果我在其中再添加一个字段,那么甚至一个都不起作用。任何人都可以帮助我根据电子邮件和电话号码过滤内容。
<ng-select [options]="name" [(ngModel)]="filter.name"></ng-select>
<ng-select [options]="email" [(ngModel)]="filter.email"></ng-select>
<input type="number" onKeyPress="if(this.value.length==10) return false;" class="form-textbox input-text" [(ngModel)]="filter.phone_number">
<ng-select [options]="pinAddress" [(ngModel)]="filter.address"></ng-select>
用于过滤表格的管道:
<tbody>
<tr *ngFor="let pin of pins | pinfilter:filter">
<td>{{pin.name}}</td>
<td>{{pin.description}}</td>
<td>{{pin.address}}</td>
<td>{{pin.website}}</td>
<td>{{pin.phone_number}}</td>
<td>{{pin.email}}</td>
<td>{{pin.comments}}</td>
</tr>
</tbody>
TS:
filter.pipe.ts:
/* Tutorial filter to write filter functions for Tutorial*/
import { Pipe, PipeTransform } from '@angular/core';
export class NewPin {
public _id:number;
public user_id:number;
public name:string;
public address:string;
public phone_number:string;
public email:string;
public comments:boolean;
}
@Pipe({
name: 'pinfilter',
pure: false
})
export class PinPipe implements PipeTransform {
transform(items: NewPin[], filter: NewPin): NewPin[] {
if (!items || (!filter.name && !filter.address)) {
return items;
}
return items.filter((item: NewPin) => this.applyFilter(item, filter));
}
applyFilter(user: NewPin, filter: NewPin): boolean {
console.log(filter);
if (filter.name && filter.address) {
if (filter.name == user.name && filter.address == user.address) {
return true
} else {
return false
}
} else if (filter.name) {
if (filter.name == user.name) {
return true
} else {
return false
}
} else if (filter.address) {
if (filter.address == user.address) {
return true
} else {
return false
}
} else {
return true
}
}
}
组件.ts:
public filter: NewPin = new NewPin();
最佳答案
您需要更改 applyFilter 函数,以便它根据要过滤的数据检查所有过滤器属性。
我还建议让它在结构上更简单一些,像这样:
applyFilter(user: NewPin, filter: NewPin): boolean {
console.log(filter);
// check all the filters
if (filter.name && filter.name != user.name) {
return false;
}
if (filter.address && filter.address != user.address) {
return false
}
if (filter.email && filter.email != user.email) {
return false;
}
if (filter.phone_number && filter.phone_number != user.phone_number) {
return false;
}
// if the user passes all the filters, show it
return true;
}
关于javascript - 如何通过手动输入数字和使用angular2过滤来过滤内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427728/
我收到 3 个参数 NaN、+infinity 和 -infinity,我想通过更改 IEEE 754 数字的指数和尾数来手动生成 NaN、+inf、-inf。我怎样才能做到这一点并将其保存到 flo
我这里有这段代码。 #include #include #include int main() { int *size; int i = 0; char buf[] =
我在 Resources.Designer.cs 中添加了一个小函数,它工作得很好,问题是当我从 Resources.resx 中添加或删除某些东西时,这个函数总是被删除,有没有我可以放置的指示器还是
我首先尝试将 Entity Framework 代码用于一个简单的数据库项目,但我遇到了一个我根本无法弄清楚的问题。 我注意到 EF 将我的表的 ID 设置为每次自动增加 1,完全忽略了我为该字段手动
我是一名优秀的程序员,十分优秀!