我有简单的Angular 2应用程序,如下所示:
数据结构
class Item {
name: string,
status: boolean
}
模板
<ul *ngIf="items">
<li *ngFor="let item of items">{{ item.name }}</li>
</ul>
组件
export class ItemsComponent implement OnInit {
items: Item[]
constructor(private itemService: ItemService) { }
ngOnInit() {
this.getItems();
}
private getItems(): void {
this.itemService.getItems().then(items => this.items = items);
}
}
使用getItems()
ItemService
的异步数据接收器Promise
。
此应用效果很好。完整项目列表显示在浏览器上。
我想只显示状态为true
的项目。为此,我实施了一个简单的管道,以items
:
status
@Pipe({
name: 'filterByStatus'
})
export class FilterByStatusPipe implements PipeTransform {
transform(votes: Vote[], status: boolean): Vote[] {
return votes.filter(vote => vote.status === status);
}
}
我将模板中的li
标记更新为
<li *ngFor="let item of items|filterByStatus:true">{{ item.name }}</li>
但是,此更新会使<ul *ngIf="items">
为false,因此不会计算<li>
s。 (即items === undefined
)
我不知道为什么第一个版本运行良好但更新版本没有。我如何通过items
获取status === true
?
感谢。
答案 0 :(得分:0)