在Angular中,如果FormGroup中包含复选框,那么通过设置touched属性来判断用户是否与此交互并触发相应事件。但实际上,这个属性并不会对复选框起作用。为了解决这个问题,我们需要使用FormControl来替换FormGroup对象。
以下是一个示例:
HTML代码:
组件代码:
import { Component } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
form: FormGroup;
ngOnInit(): void {
this.form = new FormGroup({
checkboxControl: new FormControl(false)
});
}
onFormSubmit() {
this.form.get('checkboxControl').markAsTouched();
}
}
在上面的示例中,我们通过创建一个FormControl对象并将其添加到FormGroup中来解决该问题。通过将触摸事件添加到FormControl上,我们可以确保touched属性能够正常工作。在提交表单时,我们可以调用markAsTouched方法来更新FormGroup。
以上就是解决Angular FormGroup在复选框上touched属性不起作用的方法。