У меня есть formArray, и по клику я вызываю метод addReps для pu sh новой 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();
Но я получаю ту же ошибку