如何在chage上获取selectedIndex值并在angular 7中的其他文本框中追加值
在我的angular应用程序中,我有一个表单,表单中有四个字段,当我从下拉菜单中更改食品时,价格字段不会更改,因为任何人都不知道 这是api的响应 它显示一个错误,如error如何在chage上获取selectedIndex值并在angular 7中的其他文本框中追加值,angular,Angular,在我的angular应用程序中,我有一个表单,表单中有四个字段,当我从下拉菜单中更改食品时,价格字段不会更改,因为任何人都不知道 这是api的响应 它显示一个错误,如errorTypeError:无法读取未定义的属性“price” 这是我的component.html <div class="form-group"> <label>Foot Item :</label> <select name="item_id" #it
TypeError:无法读取未定义的属性“price”
这是我的component.html
<div class="form-group">
<label>Foot Item :</label>
<select name="item_id" #item_id="ngModel" [(ngModel)]="formData.item_id" class="form-control" (change)="updatePrice($event.target)">
<option value="0">--Select--</option>
<option *ngFor="let item of itemList.data" value="{{item.id}}">{{item.item_name}}</option>
</select>
</div>
我认为这个代码应该适用于您:
<div class="form-group">
<label>Foot Item :</label>
<select name="item_id" #item_id="ngModel" [(ngModel)]="formData.item_id"
class="form-control" (change)="updatePrice($event)">
<option value="-1">--Select--</option>
<option *ngFor="let item of itemList.data;let i=index" [value]="i">
{{item.item_name}}</option>
</select>
</div>
我认为这个代码应该适用于您:
<div class="form-group">
<label>Foot Item :</label>
<select name="item_id" #item_id="ngModel" [(ngModel)]="formData.item_id"
class="form-control" (change)="updatePrice($event)">
<option value="-1">--Select--</option>
<option *ngFor="let item of itemList.data;let i=index" [value]="i">
{{item.item_name}}</option>
</select>
</div>
我认为您的错误是这样做。itemList[index]。price,而您在DOM中迭代了itemList.data。所以它应该是itemList.data[index].price
替换ngModelChange的更改侦听器将发出所选选项的值。由于选择更改选项时选项的值是索引,因此将发出所选选项的索引,并且您将能够轻松访问数组项。我认为您的错误在于这样做。itemList[index]。price在DOM中迭代itemList.data。所以它应该是itemList.data[index].price
替换ngModelChange的更改侦听器将发出所选选项的值。由于选择更改选项时选项的值是索引,因此将发出所选选项的索引,您将能够轻松访问数组项。您在哪一行收到此错误?this.formData.price或this.itemList[ctrl.target.value].price?我可以看看你的itemList json吗?this.formData.price=this.itemList[ctrl.selectedIndex-1]。price;价格是不确定的,我想“this.itemList”后面的“data”不见了,我已经编辑了我的答案,应该可以了now@MohammadrezaImani,您的检查是错误的,必须是if(ctrl.target.value==-1)。并考虑formData.item_id将成为索引的值,而不是IDI,您将在哪一行获得此错误?this.formData.price或this.itemList[ctrl.target.value].price?我可以看看你的itemList json吗?this.formData.price=this.itemList[ctrl.selectedIndex-1]。price;价格是不确定的,我想“this.itemList”后面的“data”不见了,我已经编辑了我的答案,应该可以了now@MohammadrezaImani,您的检查是错误的,必须是if(ctrl.target.value==-1)。并考虑formData.item_id成为索引的值,而不是id
updatePrice(ctrl){
if(ctrl.target.value == -1)
{
this.formData.price = 0;
this.formData.item_name = '';
}
else
{
this.formData.price = this.itemList.data[ctrl.target.value].price;
this.formData.item_name = this.itemList.data[ctrl.target.value].item_name;
}
}