我有一个这样的组件
export class DishComponent implements OnInit{
@Input() dishID : number
@Input() showList: boolean = false;
selectedDishes : Array<any> = [];
dishSubscribe : Subscription;
totalDishprice : number;
dish : any;
constructor(
private dishComponentService : DishComponentService,
private dishService : DishService
) {
this.dishSubscribe = this.dishService.dishItems$.subscribe( data =>{
this.totalDishprice = data.map( dish => Number(dish.price)).reduce((prev, next) => prev + next, 0);
console.log(this.totalDishprice);
})
}
ngOnInit(){
this.dishComponentService.getDishByID(this.dishID).subscribe( response => {
console.log(response);
this.dish = response.data[0];
},(err) =>{
console.log(err);
})
}
checkDish(dish,isChecked){
if(isChecked){
this.selectedDishes.push(dish);
//this.selectedDishes = [...this.selectedDishes, dish];
this.dishService.addDish(this.selectedDishes);
}else{
let index = this.selectedDishes.findIndex(x => x.id == dish.id);
this.selectedDishes.splice(index,1);
this.dishService.addDish(this.selectedDishes);
}
console.log(this.selectedDishes);
}
}
,视图就是这样,
<ng-container *ngIf="!showList">
<ion-item class="order-third-dish horizontal-item checkbox-tag">
<ion-label><span>{{dish?.name}}</span></ion-label>
<ion-checkbox class="myinput large custom" (ionChange)="checkDish(dish,$event.checked)" [checked]="isInArray(dish?.id)">
</ion-checkbox>
</ion-item>
</ng-container>
<ng-container *ngIf="showList">
<h2 class="item-title">{{dish?.name}}</h2>
<ion-note class="item-time" item-right>{{dish?.price | currency : 'INR' : true : '.2-2'}}</ion-note>
<ion-checkbox class="dish_check" (ionChange)="checkDish(dish,$event.checked)" [checked]="isInArray(dish?.id)">
</ion-checkbox>
</ng-container>
在这里,我正在做的是,在复选框中的每次检查中更新selectedDishes
数组。但问题是push
无法在checkDish
函数中运行。 this.dishService.addDish(this.selectedDishes);
我在这里只是将它添加到一个observable中。
答案 0 :(得分:1)
你在盘子里有对象
{id: "1", name: "Omelettes", price: "35.00", image: false, …}
喜欢这个
所以你有一个选定菜的数组然后你正在推动一个物体 如果您想要访问该菜肴名称并将其推送到所选菜肴,那么您必须这样做...
a = [1,2,3,4,{id:1,name:"aarsh"}]
如果你想访问名称,那么
a[4].name
然后你得到了#34; aarsh&#34;作为输出。
所以在这里你得到dish = {id: "1", name: "Omelettes", price: "35.00", image: false, …}
那么你可以这样做dish.name
,你会得到煎蛋卷