【发布时间】:2016-05-29 11:43:39
【问题描述】:
我希望在使用 Angular 的 FormBuilder 选中复选框之前禁用按钮。我不想明确检查复选框的值,而是更喜欢使用验证器,以便我可以简单地检查form.valid。
在下面的两种验证情况下,复选框都是
interface ValidationResult {
[key:string]:boolean;
}
export class CheckboxValidator {
static checked(control:Control) {
return { "checked": control.value };
}
}
@Component({
selector: 'my-form',
directives: [FORM_DIRECTIVES],
template: ` <form [ngFormModel]="form" (ngSubmit)="onSubmit(form.value)">
<input type="checkbox" id="cb" ngControl="cb">
<button type="submit" [disabled]="!form.valid">
</form>`
})
export class SomeForm {
regForm: ControlGroup;
constructor(fb: FormBuilder) {
this.form = fb.group({
cb: [ CheckboxValidator.checked ]
//cb: [ false, Validators.required ] <-- I have also tried this
});
}
onSubmit(value: any) {
console.log('Submitted: ', this.form);
}
}
【问题讨论】:
-
那么有什么问题,你的第二个版本工作正常
[ false, Validators.required ]。 -
在第二种情况下,至少对我来说,
this.form.value是{ cb: false }和this.form.valid是true -
看答案。
this.form.valid已不复存在true. -
现在可以使用
Validators.requiredTrue
标签: angular angular2-forms angular-reactive-forms