私は電話番号(モバイル、パーソナル、その他)を収集しています。私は少なくとも人口が入力される必要があります。私はAngular2 FormBuilderを使用しようとしています。Angular2 FormBuilder Validatiors:グループに少なくとも1つのフィールドを入力する必要があります
多くの研究の後、私はこの問題を回避するために問題を抱えています。私は他のメソッドを使ってそれを行うことができることを知っていますが、FormBuilder Validatorsを使用することが可能かどうか疑問に思っていました。 "Validators.required"を追加すると、3つのフィールドがすべて必要になります。任意の提案やアイデア?
(それはまだ微調整が必要である)私のグループバリ: "JB Nizet" からヒントの
phone: this._fb.group(
{
other: [''],
personal: [''],
mobile: [''],
}
ベースは、ここで私はそれを動作させるために実装しなければならなかったものだ
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 }
)
私はしばらくかかりましたが、キーワードは「バリデーター」というキーワードを追加することでグループvaふたをする。 HTMLで
私は、次を追加しました:
<small *ngIf="!myForm.controls.profile.controls.phone.valid" class="text-danger">
At least one phone is required.
</small>
私は、これは他の誰の助けを願っています。
あなたはグループ自体のバリデータを指定する必要があり、このバリデータは、そのコントロールの少なくとも一方が値を持っていることを確認する必要があります。 –
この[**チュートリアル**](https://scotch.io/tutorials/how-to-implement-conditional-validation-in-angular-2-model-driven-forms)は便利かもしれません。 – developer033
JB Nizetのヒントありがとうございます。 – Manny