【发布时间】:2017-02-22 07:58:09
【问题描述】:
我有这个完全合法的数据源:
public data = [
{ Field1: 1, Field2: 'One' },
{ Field1: 2, Field2: 'Two' },
{ Field1: 3, Field2: 'Three' },
{ Field1: 4, Field2: 'Four' }
];
我将它显示在这样的表格中:
<table>
<thead>
<th>Field1</th>
<th>Field2</th>
</thead>
<tbody>
<tr *ngFor="let item of data">
<td>{{item.Field1}}</td>
<td>{{item.Field2}}</td>
</tr>
</tbody>
</table>
现在假设我想过滤我的数组。如果我有固定数量的行,我可以选择在 tr 元素上使用 *ngIf 显示/不显示项目,但 Angular 不允许在一个元素上使用两个结构指令。
我知道我可以使用 Array.filter 简单地过滤源数组,但这会产生一个副本,如果我的数组更大,这可能是个问题。
我想过将行嵌套在某个东西中(div,也许?),但我不确定那是有效的 HTML。
那么使用 Angular 2 动态过滤数据的正确方法是什么?
【问题讨论】:
-
您可以编写自己的
Pipe以在视图中显示过滤结果.. -
ng-container 或模板可能会对您有所帮助
-
@PankajParkar 由于性能问题,Angular 文档对此提出警告。
标签: angular templates angularjs-filter