【问题标题】:why formgroup is not detecting changes on select element in Angular为什么formgroup没有检测到Angular中选择元素的变化
【发布时间】:2021-08-02 06:00:03
【问题描述】:

由于某种原因,在 Angular 反应形式的选择元素上未检测到更改。以下是代码摘录

组件html代码

 <form (ngSubmit)="onSubmit()" [formGroup]="postProjectForm">
                        <div class="form-group">
                            <label>Job Type:</label>
                            <select formControlName="jobType" (change)="onChange($event.target.value)" >
                                <option *ngFor="let jt of jobTypes" [value]="jt">{{jt}}</option>
                            </select>
                        </div>                   
</form>

组件js代码

jobTypes = ['Full time', 'Part time', 'Intership', 'Freelancing'];

constructor(private fb: FormBuilder){
this.postProjectForm = this.fb.group({jobType: new FormControl(this.jobTypes[0])})
}

onSubmit() {
console.log(this.postProjectForm.get('jobType').value);
}

 onChange(val){
        console.log(val);
 }

代码开始正常,即选择填充三个四个值,默认值是“全职”。但是,当我更改选项并提交时, onSubmit 方法会记录初始值( Full Time )。 而且 onChange 方法根本不会触发!

【问题讨论】:

  • 这没有帮助。此外 this.postProjectForm.controls.jobType.pristine 在 onSubmit 中仍然显示为 true,即使我更改了选择值并提交
  • this.fb.group({jobType: this.jobTypes[0]})。如果您使用 formBuilder not 使用新的 FormControl,请参阅,例如stackoverflow.com/questions/68470645/…
  • 还是一样,由于某些原因它在其他页面/组件中工作

标签: javascript angular angular-reactive-forms formgroups


【解决方案1】:

尝试更新:&lt;select formControlName="jobType" (change)="onChange($event.target.value)" &gt;&lt;select formControlName="jobType" (change)="onChange($event.target)" &gt;

onChange(val){ console.log(val); }onChange(val){ console.log(val.value); },看看onChange 事件现在是否有效。如果这有效,那么该表格也应该有效。我没有看到任何其他原因。

如果是这样,我大概可以解释发生了什么。

【讨论】:

  • 严格类型检查已关闭,所以我想这就是问题所在。但是在其他页面/组件中一切正常
猜你喜欢
  • 2017-06-26
  • 2020-07-11
  • 2021-11-01
  • 2020-01-13
  • 2012-11-22
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多