Angular 如何默认设置单选按钮、响应式表单
Angular how to default set radio buttons, Reactive forms
在 Angular 中使用单选按钮实现响应式表单。我想设置一个默认值,我尝试了以下方法:
模板:
<form [formGroup]="form" (ngSubmit)="onSubmit(form)" class="actionsForm">
<input type="radio" id="entertainCrowdSkill1" [value]="skillsForBackend[0]"
class="radiobuttons" formControlName="skill" [checked]="true">
<input type="radio" id="entertainCrowdSkill2" [value]="skillsForBackend[1]"
class="radiobuttons" formControlName="skill">
</form>
型号:
ngOnInit() {
this.form = this.fb.group({
skill: ['', Validators.required],
});
}
onSubmit(form) {
console.log(form.controls.skill.value) // logs empty string
}
即使应用了 CSS:checked
class,该按钮似乎也已被选中。但是,当我尝试记录 skill 的值时,它是一个空字符串(在 fb 中输入的默认值)。我见过 但这是针对模板驱动的表单。
如何以反应形式为模板中的单选按钮设置默认值?
使用 FormBuilder
组构造函数而不是使用 [checked] 分配初始值。您分配了值 ''
,它是一个空字符串。要执行 onSubmit 函数,请将 (ngSubmit)="onSubmit()"
添加到表单标签。
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<input type="radio" formControlName="skill" [value]="skillsForBackend[0]">
<input type="radio" formControlName="skill" [value]="skillsForBackend[1]">
</form>
在您的打字稿中尝试以下操作。
ngOnInit() {
this.form = this.fb.group({
skill: [this.skillsForBackend[0], Validators.required]
});
}
onSubmit() {
console.log(this.form.value) // should show { skill: /* your data */ }
}
下面的方法对我有用。
首先在你的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>
然后修改你的模型如下。
ngOnInit() {
this.form = this.fb.group({
skill: ['crowdSkill1', Validators.required],
});
}
onSubmit(form) {
console.log(form.controls.skill.value) // logs empty string
}
注意在html中添加的value属性的值如何也作为skill的初始值添加到表单组中。
在 Angular 中使用单选按钮实现响应式表单。我想设置一个默认值,我尝试了以下方法:
模板:
<form [formGroup]="form" (ngSubmit)="onSubmit(form)" class="actionsForm">
<input type="radio" id="entertainCrowdSkill1" [value]="skillsForBackend[0]"
class="radiobuttons" formControlName="skill" [checked]="true">
<input type="radio" id="entertainCrowdSkill2" [value]="skillsForBackend[1]"
class="radiobuttons" formControlName="skill">
</form>
型号:
ngOnInit() {
this.form = this.fb.group({
skill: ['', Validators.required],
});
}
onSubmit(form) {
console.log(form.controls.skill.value) // logs empty string
}
即使应用了 CSS:checked
class,该按钮似乎也已被选中。但是,当我尝试记录 skill 的值时,它是一个空字符串(在 fb 中输入的默认值)。我见过
如何以反应形式为模板中的单选按钮设置默认值?
使用 FormBuilder
组构造函数而不是使用 [checked] 分配初始值。您分配了值 ''
,它是一个空字符串。要执行 onSubmit 函数,请将 (ngSubmit)="onSubmit()"
添加到表单标签。
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<input type="radio" formControlName="skill" [value]="skillsForBackend[0]">
<input type="radio" formControlName="skill" [value]="skillsForBackend[1]">
</form>
在您的打字稿中尝试以下操作。
ngOnInit() {
this.form = this.fb.group({
skill: [this.skillsForBackend[0], Validators.required]
});
}
onSubmit() {
console.log(this.form.value) // should show { skill: /* your data */ }
}
下面的方法对我有用。
首先在你的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>
然后修改你的模型如下。
ngOnInit() {
this.form = this.fb.group({
skill: ['crowdSkill1', Validators.required],
});
}
onSubmit(form) {
console.log(form.controls.skill.value) // logs empty string
}
注意在html中添加的value属性的值如何也作为skill的初始值添加到表单组中。