Я создаю настраиваемую реактивную форму из динамического значения JSON, пытаясь скрыть символ, который пользователь ввел в текстовое поле, до символа звездочки,
Пример: допустим, пользователь набирает привет, мир.
Ожидаемый результат: **********, это должно произойти, когда пользователь вводит каждый символ
будет также проверка шаблона, например, только алфавит и только номер,
Я достиг указанного выше ожидаемого результата, но проверка не работает должным образом.
Код, который я пробовал
SetValidations(val: any) {
this.formBuilder.control(val.key);
this.newGeographyForm.addControl(
val.key.toString(),
new FormControl('')
);
let validators = this.getValidatorFnArray(val.templateOptions)
debugger
this.newGeographyForm.get(val.key).setValidators(validators)
val.templateOptions.input_mask > 0 ?this.MaskValue(val.key,val.templateOptions.input_mask) : ''
}
MaskValue(formControlVal:any,maskType:any){
const regex = /\S/gi;
const subst = `*`;
this.newGeographyForm.get(formControlVal).valueChanges.pipe(distinctUntilChanged()).subscribe(fVal=>{
const result = fVal.replace(regex, subst);
this.newGeographyForm.get(formControlVal).patchValue( result, {emitEvent: false});
this.newGeographyForm.get(formControlVal).updateValueAndValidity();
})
}
getValidatorFnArray(obj): ValidatorFn[] {
const validators = [];
if (obj.is_mandatory) {
debugger
validators.push(Validators.required);
}
if (obj.min != null) {
debugger
validators.push(Validators.minLength(obj.min));
}
if (obj.max != null) {
validators.push(Validators.maxLength(obj.max));
}
if (obj.regex != null) {
validators.push(Validators.pattern(obj.regex));
}
return validators
}