我有像这样的json
[{
"id": 9156,
"slug": "chicken-seekh-wrap",
"type": "dish",
"title": "Chicken Seekh Wrap",
"cuisine_type": [2140]
},
{
"id": 9150,
"slug": "green-salad",
"type": "dish",
"title": "Green Salad",
"cuisine_type": [2141]
}]
我创建了一个像这样的管道来过滤angular2中的美食类型
@Pipe({
name: 'filter',
pure: false
})
export class FilterPipe implements PipeTransform {
transform(items: any[], selectedId: any): any {
if(selectedId === -1)
return items;
return items.filter(item => item.cuisine_type[0] === selectedId);
}
}
在离子视图中,我像这样使用它
<ion-card *ngFor="let cat of selectedCats">
<ion-card-header>
{{cat}}
</ion-card-header>
<ion-card-content>
<ion-list class="checkbox-list" *ngIf="dishes ?.length > 0">
<ion-item class="checkbox-item" *ngFor="let dish of dishes | filter:cat">
<ion-label>{{dish.title}}</ion-label>
<ion-checkbox [formControlName]="dish.id"></ion-checkbox>
</ion-item>
</ion-list>
</ion-card-content>
</ion-card>
当我使用管道值作为静态工作
时 <ion-item class="checkbox-item" *ngFor="let dish of dishes | filter:2140">
但是当我动态使用它时,它没有显示任何结果
<ion-item class="checkbox-item" *ngFor="let dish of dishes | filter:cat">
答案 0 :(得分:1)
问题不是由Angular引起的,而是由您的代码引起的
item.cuisine_type[0] === selectedId
对接受的价值过于具体
item.cuisine_type[0] == selectedId
在比较之前允许类型强制,更宽容。
这意味着,cat
可能是字符串'2140'
和item.cuisine_type[0]
一个数字。
如果您将其作为| filter:2140"
传递,则会将其作为号码传递并与item.cuisine_type[0]
匹配。