当数组中只有一个元素时,change事件不会触发

时间:2019-01-20 13:11:30

标签: html typescript angular6

我正在使用angular 6开发一个Web应用程序。我有一个位置数组和一个填充位置名称的选项列表。我正在使用'onchange'事件获取所选位置。我的问题是,如果存在如果仅是位置数组中的一个元素,则onchange事件不会触发。有人可以对此进行解释。吗?如果有多个元素,那么就没有问题,它可以正常工作。  如果数组中只有元素,该如何实现?

  <div class="form-group w-50">
    <label for="locations" style="font-size: 14px" class="mb-0">Select
      Location:</label>
    <select class="form-control form-control-sm" id="loca" (input)="onLocationSelect($event.target.value)">
      <option *ngFor="let locations of locationsArray" value={{locations?.id}}>{{locations?.name}}</option>
    </select>
  </div>

component.ts:

 onLocationSelect(value: string) {
try {
  const tempValue = value 
  this.selectedLocation = tempValue;
  console.log(tempValue)
} catch (error) {
  console.log(error)
}`enter code here`
}

1 个答案:

答案 0 :(得分:0)

似乎没有一种方法可以做到完全一样。我建议设置为您的选择元素添加一个[(ngModel)]="selectedLocation"。在打字稿中,您可以通过类似

的操作来设置选择的默认值
selectedLocation = locationsArray[0];

 onLocationSelect(value: string) {
 console.log(`location was changed to ${value}`);
}

通过这种方式,selectedLocation属性将始终反映实际选择的值,并且在onLocationSelect函数内部,当逻辑发生实际更改时,您仍然可以执行该逻辑。