【发布时间】:2020-03-23 16:07:16
【问题描述】:
我有一个 formArray,点击时我正在调用 addReps 方法来推送一个新的 formGroup。我想使用 setValidators 方法动态添加一些验证器,但是当我这样做时,我得到了错误: 无法读取未定义的属性“setValidators”。我的表单工作正常,但我不明白为什么会出现此错误。我的 formControl 访问 this.reps.controls["mobileNumber"] 是否有问题?
constructor(private fb: FormBuilder, private stateService: StateService, private apiService: ApiService) {
this.form = this.fb.group({
reprepresentative: this.fb.array([]),
});
}
addReps() {
this.reps = this.form.controls.reprepresentative as FormArray;
this.reps.push(this.fb.group({
firstname: ['', [Validators.required,
Validators.minLength(2),
this.ValidateNames
]],
surname: ['', [Validators.required,
Validators.minLength(2),
this.ValidateNames
]],
mobileNumber: ['', [Validators.required,
Validators.pattern(/^(69[0-9])[0-9]{7}$/)
]],
isInitiator: false,
editRep: true
}));
this.reps.controls["mobileNumber"].setValidators([this.SameMobileValidator,Validators.required,Validators.pattern(/^(69[0-9])[0-9]{7}$/)]);
this.reps.controls["mobileNumber"].updateValueAndValidity();
}
SameMobileValidator(formControl: AbstractControl){
let repList = this.stateService.reprepresentativeList;
const found = repList.some(el => el.MobilePhone == formControl.value)
if(!found) return null;
else { return { mismatch: true }; }
}
我也试试这个:
this.reps.get("mobileNumber").setValidators([Validators.required,Validators.pattern(/^(69[0-9])[0-9]{7}$/),this.ValidateNames]);
this.reps.get("mobileNumber").updateValueAndValidity();
但我遇到了同样的错误
【问题讨论】:
标签: angular angular-reactive-forms angular-validation