でフォームを作成していてFormBuilder
、 を に追加しValidator
たいformGroup
。これが私のコードです:
this.myForm = fb.group({
'name': ['', [Validators.maxLength(50), Validators.required]],
'surname': ['', [Validators.maxLength(50), Validators.required]],
'address': fb.group({
'street': ['', Validators.maxLength(300)],
'place': [''],
'postalcode': ['']
}),
'phone': ['', [Validators.maxLength(25), phoneValidator]],
'email': ['', emailValidator]
});
特定の条件で、アドレスの formControls の一部にバリデーターを条件付きで追加したいと考えています。
そこでvalidator
、次の方法でa を追加しました。
'address': fb.group({
'street': ['', Validators.maxLength(300)],
'place': [''],
'postalcode': ['']
}), { validator: fullAddressValidator })
次に、アドレスのバリデーターの作成を開始しましたFormGroup
。
export const fullAddressValidator = (control:FormGroup) => {
var street:FormControl = control.controls.street;
var place:FormControl = control.controls.place;
var postalcode:FormControl = control.controls.postalcode;
if (my conditions are ok) {
return null;
} else {
return { valid: false };
}
};
次の条件を追加する必要があります。
- すべてのフィールドが空の場合、フォームは有効です
- フィールドの 1 つが入力されている場合は、すべてのフィールドが必須である必要があります
place
(都市ではなく) 国のインスタンスである場合、postalcode
はオプションですpostalcode
が入力されている場合は、 その formControl に追加するzipValidator
必要があります
では、Angular2Validators
をFormGroup
特定の条件で追加することは可能ですか? もしそうなら、私の条件を実装する方法は?別のバリデーターのソースコードでsetValidators()
andを使用できますか?updateValueAndValidity()