Angular:バリデーターの既存のセットに追加Formcontrol
Nov 26 2020
FormControlの既存のバリデーターのセットに追加またはプッシュするにはどうすればよいですか?配列として追加したい。次の答えは、それらすべてを一度に設定するだけです。
Angularで、コントロールの作成後にValidatorをFormControlに追加するにはどうすればよいですか?
Angular-バリデーターを動的に追加/削除します
newFormControl.setValidators([Validators.required])
newFormControl.setValidators([Validators.pattern("^[0-9]*$")])
newFormControl.setValidators([Validators.maxLength])
回答
GyörgySzy Nov 26 2020 at 15:21
setValidators()は以前のバリデーターを削除するため、バリデーターを個別に収集し、たとえば2つの変数に保持し、必要に応じて1つの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)
}
したがって、この方法では、それらを1つずつ設定する必要はありません。
(バリデーターはsetValidators()内の配列に格納されていないため、1回の呼び出しですべてのバリデーターを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));