【发布时间】:2017-03-12 06:54:36
【问题描述】:
我有一个表格,用于收集电话号码(手机号码、个人号码、其他号码)。我需要至少填充输入。我正在尝试使用 Angular2 FormBuilder。
经过大量研究,我无法解决这个问题。我知道我可以使用其他方法来做到这一点,但我想知道是否可以使用 FormBuilder Validators。如果我添加“Validators.required”,那么所有 3 个字段都是必需的。有什么建议或想法吗?
phone: this._fb.group(
{
other: [''],
personal: [''],
mobile: [''],
}
根据“JB Nizet”的提示,我必须执行以下操作才能使其工作:
我的组验证器(仍然需要调整):
static phoneExists(group: FormGroup): { [key: string]: any } {
if (null != group) {
var other: AbstractControl = group.controls['other'];
var mobile: AbstractControl = group.controls['mobile'];
var personal: AbstractControl = group.controls['personal'];
var data: Object = group.value;
return (
(other.valid && isEmptyInputValue(other.value))
&& (mobile.valid && isEmptyInputValue(mobile.value))
&& (personal.valid && isEmptyInputValue(personal.value))
)
? { 'required': true }
: null;
}
}
我的组更改:
phone: this._fb.group(
{
other: [''],
personal: [''],
mobile: [''],
},
{ validator: MyValidators.phoneExists }
)
我花了一些时间,但关键是添加关键字“validator”,它会导致组验证器触发。
在 HTML 中我添加了以下内容:
<small *ngIf="!myForm.controls.profile.controls.phone.valid" class="text-danger">
At least one phone is required.
</small>
我希望这对其他人有帮助。
【问题讨论】:
-
您需要在组本身上指定一个验证器,并且该验证器需要检查它的至少一个控件是否有值。
-
这个tutorial 可能有用。
-
感谢 JB Nizet 的提示。
标签: validation angular formbuilder