Как удалить ошибку проверки после ввода правильных входных значений с помощью angular8

Я использую реактивные формы, где я поставил ошибку проверки для номера телефона, если я дал менее 10-значное число, тогда он должен отображать сообщение об ошибке, когда есть 10 номеров, сообщение проверки должно быть скрыто. Но вот все время этот валидационный номер остается одним и тем же.

ДЕМО: ДЕМО

HTML:

<div class="form-group">
                <label for="">Phone Number <span class="text-danger">*</span></label>
                <input type="text" class="form-control" placeholder="(###) ### - ####" formControlName="agentPhone"
                  name="phoneNumber" autocomplete="new-phone" (keypress)=_keyPress($event)
                  [ngClass]="{ 'is-invalid': submitted && detailsInfo.agentPhone.errors }" appPhoneMask maxlength="14">
                <div *ngIf="submitted && detailsInfo.agentPhone.errors" class="invalid-feedback">
                  <div *ngIf="detailsInfo.agentPhone.errors.required">Phone number is required</div>
                  <div *ngIf="detailsInfo.agentPhone.errors.pattern">please enter valid Phone number</div>
                </div>
              </div>

Ts:

  _keyPress(event: any) {
    const pattern = /[0-9]/;
    let inputChar = String.fromCharCode(event.charCode);
    if (!pattern.test(inputChar)) {
        event.preventDefault();

    }
}

this.agentbasicInfoForm = this.FB.group({
        agentPhone: ['', [Validators.required,Validators.pattern('[1-9]\\d{9}')]],
})

person Bhrungarajni    schedule 02.02.2020    source источник
comment
Можете ли вы создать stackblitz?   -  person Chellappan வ    schedule 02.02.2020
comment
Да попробую создать и обновить   -  person Bhrungarajni    schedule 02.02.2020
comment
@Chellappan வ У меня есть обновленная демоверсия, пожалуйста, посмотрите.   -  person Bhrungarajni    schedule 02.02.2020
comment
Кажется, ваш шаблон регулярного выражения неверен. Каково ваше требование, разрешены только числа?   -  person Chellappan வ    schedule 02.02.2020
comment
здесь мой шаблон должен быть (###) ### - ####, и здесь, если длина телефонного номера меньше, тогда он должен выдавать ошибку проверки, например, если это что-то вроде (###) - ##, при вводе действительного номера телефона должна быть выдана ошибка проверки.   -  person Bhrungarajni    schedule 02.02.2020


Ответы (1)


Если я правильно вас понял: используйте это регулярное выражение:

Validators.pattern('^[0-9]{10}$')

или вы можете просто указать его в валидаторе длины

Validators.minLength(10)
Validators.pattern('^[0-9]*$')

РЕДАКТИРОВАТЬ: Я отредактировал ваш код, и теперь он работает: https://stackblitz.com/edit/angular6-phone-mask-unmfkc?file=app/app.component.html

person dash    schedule 02.02.2020
comment
спасибо за ответ, но извините, что он не работает, мое требование такое: я хочу, чтобы номер телефона был замаскирован следующим образом (###) - ### - ####, и если длина меньше 10 цифр он должен показывать ошибку проверки, но здесь всегда появляется ошибка проверки, даже если было введено 10 чисел. - person Bhrungarajni; 02.02.2020
comment
Хорошо, я все еще пытаюсь выяснить, что именно вы пытаетесь сделать. Вы хотите, чтобы пользователь вводил символы, или вы хотите, чтобы символы оставались в заполнителе, пока пользователь вводит (что, насколько мне известно, невозможно)? если вы хотите, чтобы пользователь вводил символы (тире, скобки и т. д.), вам необходимо очистить последний ввод const phone = '123123dsadsa0'; const arr = phone.match (/ \ d + / g) .concat (). join ('') // результат '1231230' или вы можете разделить на 3 входа и объединить их в TS Затем вы можете проверить каждый вход отдельно. валидаторы проверяют все символы на входе. - person dash; 02.02.2020
comment
Можете ли вы запустить демонстрацию, которую я предоставил по ссылке ?? В этой ссылке есть моя проблема, пока пользователь вводит номер телефона, который он принимает (тире и скобки), но даже несмотря на то, что пользователь дал 10 номеров, исключая эти тире и круглые скобки, сообщение проверки красного цвета все еще остается таким же, меня беспокоит то, что , когда пользователь вводит 10-значное число, исключая тире и скобки, сообщение проверки должно быть скрыто, но в моем случае оно все еще отображается - person Bhrungarajni; 02.02.2020
comment
У тебя есть время, чтобы ответить на мой вопрос? - person Bhrungarajni; 02.02.2020
comment
есть идеи по этому поводу? - person Bhrungarajni; 03.02.2020
comment
это что ты имел в виду? stackblitz.com/edit/angular6-phone- маска-unmfkc? file = app / - person dash; 03.02.2020
comment
спасибо за ваш ответ, и он работает в соответствии с моими требованиями. - person Bhrungarajni; 03.02.2020
comment
есть идеи по этому поводу? stackoverflow.com/questions/59997796/ - person Bhrungarajni; 03.02.2020
comment
Я редактирую свой ответ, пожалуйста, отметьте как ответивший Я надеюсь в ближайшее время рассмотреть другой вопрос - person dash; 03.02.2020
comment
да, я принял и проголосовал, есть идеи по поводу поставленного мною вопроса, если да, пожалуйста, помогите мне - person Bhrungarajni; 03.02.2020