Angular 角度如何默认设置单选按钮、反应式窗体
使用单选按钮以角度实现被动形式。要设置默认值,我已尝试以下操作: 模板: 即使应用了Angular 角度如何默认设置单选按钮、反应式窗体,angular,angular-forms,Angular,Angular Forms,使用单选按钮以角度实现被动形式。要设置默认值,我已尝试以下操作: 模板: 即使应用了CSS:checked类,该按钮也会被选中。但是,当我尝试记录skill的值时,它是一个空字符串(fb中输入的默认值)。我已经看到了一个模板驱动的表单,但这是针对模板驱动的表单的 如何在反应式表单中为模板中的单选按钮设置默认值?使用FormBuilder组构造函数分配初始值,而不是使用[checked]。您分配了值',它是一个空字符串。要执行onSubmit函数,请将(ngSubmit)=“onSubmit()”
CSS:checked
类,该按钮也会被选中。但是,当我尝试记录skill的值时,它是一个空字符串(fb中输入的默认值)。我已经看到了一个模板驱动的表单,但这是针对模板驱动的表单的
如何在反应式表单中为模板中的单选按钮设置默认值?使用
FormBuilder
组构造函数分配初始值,而不是使用[checked]。您分配了值'
,它是一个空字符串。要执行onSubmit函数,请将(ngSubmit)=“onSubmit()”
添加到表单标记中
在您的打字脚本中,尝试以下操作
ngOnInit(){
this.form=this.fb.group({
技能:[this.skillsForBackend[0],验证器。必填]
});
}
onSubmit(){
console.log(this.form.value)//应该显示{skill://*您的数据*/}
}
下面的方法对我很有效
首先在html中添加值属性
<form [formGroup]="form" (ngSubmit)="onSubmit(form)" class="actionsForm">
<input type="radio" id="entertainCrowdSkill1" [value]="skillsForBackend[0]"
value="crowdSkill1"
class="radiobuttons" formControlName="skill" [checked]="true">
<input type="radio" id="entertainCrowdSkill2" [value]="skillsForBackend[1]"
value="crowdSkill2"
class="radiobuttons" formControlName="skill">
</form>
请注意,html中添加的value属性的值也是如何添加为表单组中技能的初始值的。@WillemvanderVeen我不确定为什么要将表单
或表单.value
传递给提交
。它基本上已经在您的组件中可用,可以通过this.form
访问。我认为两种解决方案都可以,传递form.value
或通过this.form获取值…
。至少两者都起作用了。我同意传递form.value是不必要的噪音。当然它是有效的,但是this.form…
在方法本身中也会起到同样的作用。噪音小。:)
ngOnInit() {
this.form = this.fb.group({
skill: ['', Validators.required],
});
}
onSubmit(form) {
console.log(form.controls.skill.value) // logs empty string
}
<form [formGroup]="form" (ngSubmit)="onSubmit(form)" class="actionsForm">
<input type="radio" id="entertainCrowdSkill1" [value]="skillsForBackend[0]"
value="crowdSkill1"
class="radiobuttons" formControlName="skill" [checked]="true">
<input type="radio" id="entertainCrowdSkill2" [value]="skillsForBackend[1]"
value="crowdSkill2"
class="radiobuttons" formControlName="skill">
</form>
ngOnInit() {
this.form = this.fb.group({
skill: ['crowdSkill1', Validators.required],
});
}
onSubmit(form) {
console.log(form.controls.skill.value) // logs empty string
}