对于所需的复选框,Angular 4 Reactive Form始终无效

时间:2018-02-03 03:05:05

标签: angular angular-reactive-forms angular-forms

使用Angular 4,我有一个带有复选框的反应形式。必须至少选中一个复选框才能提交表单。

我创建了一个自定义验证,它似乎返回了正确的值,但表单始终无效。但是,当我检查表单控件是否有错误时,我会得到错误。

---- Plunker ----

以下是具有相同行为的示例代码:

A2

---- Plunker ----

由于

1 个答案:

答案 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