Angular : 기존 유효성 검사기 집합에 추가 Formcontrol
Nov 26 2020
FormControl의 기존 유효성 검사기 집합에 어떻게 추가하거나 푸시합니까? 배열로 추가하고 싶습니다. 다음 답변은 한 번에 모두 설정합니다.
Angular에서 컨트롤이 생성 된 후 FormControl에 Validator를 추가하는 방법은 무엇입니까?
Angular-유효성 검사기를 동적으로 추가 / 제거
newFormControl.setValidators([Validators.required])
newFormControl.setValidators([Validators.pattern("^[0-9]*$")])
newFormControl.setValidators([Validators.maxLength])
답변
GyörgySzy Nov 26 2020 at 15:21
setValidators ()는 이전 유효성 검사기를 제거하므로 유효성 검사기를 별도로 수집하고 예를 들어 두 개의 변수에 유지하고 필요에 따라 하나의 setValidators ()로 설정하는 것이 좋습니다.
const validators1 = [Validators.required, Validators.pattern("^[0-9]*$"), Validators.maxLength(10)])]
const validators2 = [Validators.required]
if( if_you_want_all_three_validators ){
newFormControl.setValidators(validators1)
} else {
// by default you want only one validator:
newFormControl.setValidators(validators2)
}
따라서 이렇게하면 하나씩 설정할 필요가 없습니다.
(검증기는 setValidators () 내부 배열에 저장되지 않으므로 한 번의 호출로 모든 검증자를 setValidators로 보내야합니다.)
Noname Nov 27 2020 at 10:03
로 배열을 설정하고 new Array<ValidatorFn>();
아래에 개별적으로 검증기를 푸시 할 수 있습니다 .
let validatorList = new Array<ValidatorFn>();
validatorList.push(Validators.required);
validatorList.push(Validators.pattern("^[0-9]*$"));
validatorList.push(Validators.maxLength(item.characterLimit));
newForm.addControl('test', new FormControl(d'5', validatorList));