在我的响应式表单中,我为3个输入字段构建了一个自定义验证。验证的主要功能是当3个输入字段中的1/2有值时返回一个错误(我希望当用户在1个字段中输入值时,所有3个字段都必需)。
这是验证器:
public addressValidator(control: AbstractControl): { [key: string]: boolean } | null {
const zip= control.get('zip');
const houseNumber= control.get('houseNumber');
const street= control.get('street');
if ((zip?.value !== "" || houseNumber?.value !== "" || street?.value !== "") &&
(zip?.value === "" || houseNumber?.value === "" || street?.value === "")) {
console.log("form not valid");
return { 'invalid': true };
} return null;
}
ngOnInit:
ngOnInit(): void {
this.contactForm = this.fb.group(
{
addition: "",
residence: ["", [
Validators.required
]],
phone: "",
mobile: "",
address: this.fb.group({
street: ['', [
]],
houseNumber: ['', [
]],
zip: ['', [
]],
}, { validator: this.adresValidator } )
});