【发布时间】:2019-06-05 07:52:05
【问题描述】:
我在 ngFor 循环中显示一个对象列表,我想用管道过滤这个列表。
我的研究让我明白了这一点:
按.pipe.ts 过滤:
import { Pipe, PipeTransform } from '@angular/core';
import { UserLink } from '../_models/user-link';
@Pipe({
name: 'filterBy'
})
export class FilterByPipe implements PipeTransform {
transform(items: User[], isActive: boolean): any {
if (!items) { return []; }
return items.filter(x => x.isActive === isActive);
}
}
在 my.component.html 中:
<tr *ngFor="let item of items$|async|filterBy: {isActive: false}">
<td>{{item.firstname}}</td>
<td>{{item.lastname}}</td>
<td>{{item.age}}</td>
</tr>
但结果不是我所期望的:我的数组是空的。
为了让它发挥作用,我错过了什么?
我在这个 stackblitz (https://stackblitz.com/edit/angular-46atle) 中尝试了我的解决方案并且它有效。但我仍然无法让它在我的项目中工作。我检查了对象的属性和其余代码,但看不到错误在哪里
[编辑]
问题解决了!我正在过滤的对象和我认为我正在过滤的对象之间缺少投射。! 初学者的错误!
感谢您的建议!
【问题讨论】:
-
可能是
<tr *ngFor="let item of items$|async|filterBy: false"> -
我仍然有同样的问题:没有结果。我通过控制台检查了我的过滤器参数是否正确填写并且没有问题。就像过滤器不起作用或返回空数组一样。是因为我正在使用 observable 吗?也许我对管道代码中的项目做错了什么?
标签: angular observable ngfor angular-pipe