javascript - 更改时的 Angular 选择值不更新

标签 javascript html angular typescript angular6

select 发生变化时,将值更改为 selected 以外的值。我有一项功能,一次只能选择 4 种项目类型,如果选择的项目类型超过 4 种,它会将值更改回更改前的值。

正在使用正确的值更新模型,但模板未反射(reflect)更改。

模板 - 在阅读 Select change event occurs before ngModel updates on angulars github. 后,我已将 (change) 更改为 (ngModelChange)

<tr *ngFor="let jobItem of job.jobItems">
    <td>
        <select 
            [disabled]="job.completed" 
            [(ngModel)]="jobItem.supplierType"
            (ngModelChange)="changeJobItemReplacementType(jobItem, $event)">
                <option *ngFor="let supplierType of supplierTypes" [ngValue]="supplierType">
                    {{ supplierType }}
                </option>
        </select>
    </td>
</tr>

事件

changeJobItemReplacementType(jobItem: JobItem, supplierType: string) {
        // THIS IS UPDATING BUT NOT REFLECTING IN TEMPLATE
        jobItem.supplierType = jobItem.originalValues.supplierType;
    }
}

最佳答案

我玩过你的 stackblitz 设置。通过添加像这样的 setTimeout 让它工作:

changeJobItemReplacementType(jobItem: JobItem, supplierType: string) {
  console.log('changed value to: ', supplierType)
  console.log('jobItem current: ', jobItem)
  setTimeout(() => {
    jobItem.supplierType = jobItem.originalValues.supplierType;
    console.log('jobItem.supplieType modified back to original: ',jobItem)
  });
}

关于javascript - 更改时的 Angular 选择值不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59869710/

相关文章:

javascript - 如何使用 javascript/jquery 将值传递给 Android PhoneGap 中的 HTML5 视频标签 src 属性?

javascript - 是否可以对多个 array.indexOf 使用 switch case

html - CSS 不影响输入按钮的位置/样式

css - 具有多个内容(img 和环绕文本)的 div 的垂直居中

angular - Angular 中的 .subscribe 是什么?

javascript - 用 contenteditable div 中的组件以 Angular 包装某些单词

javascript - ajax响应后执行soundmanager2

javascript - 折叠页面上相同的 div ID

html - 将 matplotlib 图嵌入 iPython HTML

javascript - 从 Http (ng2) 升级到 HttpClient (ng6) 后登录请求的未定义响应