Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在chage上获取selectedIndex值并在angular 7中的其他文本框中追加值_Angular - Fatal编程技术网

如何在chage上获取selectedIndex值并在angular 7中的其他文本框中追加值

如何在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

在我的angular应用程序中,我有一个表单,表单中有四个字段,当我从下拉菜单中更改食品时,价格字段不会更改,因为任何人都不知道

这是api的响应

它显示一个错误,如error
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;
    }

}