使用Angular 4,我有一个带有复选框的反应形式。必须至少选中一个复选框才能提交表单。
我创建了一个自定义验证,它似乎返回了正确的值,但表单始终无效。但是,当我检查表单控件是否有错误时,我会得到错误。
以下是具有相同行为的示例代码:
A2
由于
答案 0 :(得分:3)
这里的主要规则是
验证器函数接受Angular控件对象,如果控件值有效则返回null或验证错误对象,但总是返回对象(docs)
{ checkboxSelected: true }
或
{ checkboxSelected: false }
当您检查alertForm.get( 'fields').hasError( 'checkboxSelected')
angular时,请执行以下匹配:
return control && control.errors ? control.errors[errorCode] : null;
所以这是正确的。
要解决此问题,您应更改checkboxValidator
方法,如下所示:
checkboxValidator(control: AbstractControl) {
return control.value.indexOf(true) === -1 ? { 'checkboxSelectionError': true } : null ;
}
我还将错误名称更改为更合适的名称。
<强> Example 强>