Я ввожу адресное поле с 25 символами, так как изначально устанавливаю адрес maxlen на 25 в ngOninit, но при некоторых условиях из другого компонента я ударил объект LenError из службы и попытался изменить maxlen на 19. Теперь форма становится недействительной, поскольку я изменил maxlength от 25 до 19 и адресное поле уже содержит 25 символов. Но когда я щелкаю адресное поле и нажимаю клавишу backspace, я удаляю только один символ, в результате чего получается 24, что делает форму в идеале действительной, она должна быть недействительной, поскольку я установил maxlen на 19.
Я не могу получить то, что неправильно в моем коде. Пожалуйста, помогите.
// LenError Subject Subscribe call inside Oninit
this.service.LenError.subscribe(error => this.setValidation() );
// Form Group
this.maxLen = 25;
this.Form = this.fb.group({
address: ['', [Validators.required,
Validators.pattern('^[ a-zA-Z0-9-_!@&*)(+=|/<>?,:;."\\\']+$'),
Validators.maxLength(this.maxLen)]],
});
// setValidation Function
setValidation() {
setTimeout(() => {
const Ele = this.el.nativeElement.querySelector('#address');
const EleControl = this.Form.get('address');
this.maxLen = 19;
EleControl.clearValidators();
EleControl.setValidators([Validators.required,
Validators.pattern('^[ a-zA-Z0-9-_!@&*)(+=|/<>?,:;."\\\']+$'),
Validators.maxLength(this.dbaNameMaxLen)]);
EleControl.updateValueAndValidity();
Ele.focus();
Ele.maxLength = this.maxLen;
this.chck = true;
});
}