angular 2 中没有默认值的 FormControl 布尔值
FormControl boolean without default value in angular 2
我在 angular 2 (4.1.2)
中使用反应形式
我有一个布尔值 属性,我不希望它有默认值,但它应该是必需的。
这是我创建表单的方式:
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
payedOvertime: [false, Validators.required],
});
}
还有我的html:
<div class="form-group">
<label>Payed overtime</label>
<label>
<input type="radio" name="payedOvertime" formControlName="payedOvertime" [value]="true" />Yes
</label>
<label>
<input type="radio" name="payedOvertime" formControlName="payedOvertime" [value]="false" />No
</label>
</div>
问题是,虽然这有效,但我不想这样,但我不希望这样,而是必须通过单击其中一个单选按钮来选择它。如果没有点击任何单选按钮,我希望表单无效。
将 payedOvertime: [false, Validators.required]
更改为 payedOvertime: [null, Validators.required]
。
鉴于您将其设置为 false
,它与模板中 No
单选按钮的值匹配,并且默认选择它(正确如此)。将其设置为 null
将阻止 Angular 将值与模板中声明的任何值匹配,因此不会选择这些单选按钮。
仅将Validators.required
改为Validators.requiredTrue
,
类似于:
payedOvertime: [false, Validators.requiredTrue]
我在 angular 2 (4.1.2)
中使用反应形式我有一个布尔值 属性,我不希望它有默认值,但它应该是必需的。
这是我创建表单的方式:
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
payedOvertime: [false, Validators.required],
});
}
还有我的html:
<div class="form-group">
<label>Payed overtime</label>
<label>
<input type="radio" name="payedOvertime" formControlName="payedOvertime" [value]="true" />Yes
</label>
<label>
<input type="radio" name="payedOvertime" formControlName="payedOvertime" [value]="false" />No
</label>
</div>
问题是,虽然这有效,但我不想这样,但我不希望这样,而是必须通过单击其中一个单选按钮来选择它。如果没有点击任何单选按钮,我希望表单无效。
将 payedOvertime: [false, Validators.required]
更改为 payedOvertime: [null, Validators.required]
。
鉴于您将其设置为 false
,它与模板中 No
单选按钮的值匹配,并且默认选择它(正确如此)。将其设置为 null
将阻止 Angular 将值与模板中声明的任何值匹配,因此不会选择这些单选按钮。
仅将Validators.required
改为Validators.requiredTrue
,
类似于:
payedOvertime: [false, Validators.requiredTrue]