Angularjs 食品.过滤器不是一个函数-角度2

Angularjs 食品.过滤器不是一个函数-角度2,angularjs,angular,Angularjs,Angular,我正试图通过选择复选框进行多次删除,但在我尝试进行多次删除时,控制台中出现错误Foods.filter不是一个函数错误。当我在html表中引入管道时,出现了错误。但是如果没有管道,它可以正常工作。可能是筛选器没有接收阵列吗 html <tbody> <tr *ngFor="let key of Foods | keys; let i = index" > <td>{{i + 1}}</td>

我正试图通过选择复选框进行多次删除,但在我尝试进行多次删除时,控制台中出现错误Foods.filter不是一个函数错误。当我在html表中引入管道时,出现了错误。但是如果没有管道,它可以正常工作。可能是筛选器没有接收阵列吗

html

 <tbody>
        <tr *ngFor="let key of Foods | keys; let i = index" >
          <td>{{i + 1}}</td>
          <td><input  #{{Foods[key].id}} [(ngModel)]="Foods[key].selected" type="checkbox"></td>

    </tbody>

食物似乎是一个对象而不是数组,因此没有实现
过滤器
方法

delete() {
    Object.keys(this.Foods) //get an array of the object keys
    .filter(key => this.Foods[key].selected) //filter selected foods
    .forEach(key=>{ //for each food, delete
      let id= this.Foods[key].id;
      this.httpService.deleteFood(id);
    });
}

请注意,一个接一个地删除几个食物可能需要很长时间,也许您应该考虑在服务器上使用批删除方法。

foods
是一个对象,而不是数组。我猜
keys
管道返回
Object.keys(输入)
。这意味着keys不返回对象?返回包含对象键的数组。delete()函数似乎不会触发任何内容。我控制台记录了数据,但没有显示控制台记录了什么数据?在哪里?当我控制台记录id时,我会得到所选食物的id,但这行是this.httpService.deleteFood(id);似乎无法运行如果您可以在之前记录id,则可以。所选食物不删除
delete() {
    Object.keys(this.Foods) //get an array of the object keys
    .filter(key => this.Foods[key].selected) //filter selected foods
    .forEach(key=>{ //for each food, delete
      let id= this.Foods[key].id;
      this.httpService.deleteFood(id);
    });
}