Значение формы не сбрасывается в angular, если используется маска = '+ 1 000 000'

Я не могу сбросить поле формы после отправки формы, тогда как если я удалю маску = "+1 000 000-0000", мы сможем сбросить форму

<input class = "form-control" [(ngModel)] = "mobile" formControlName = "mobile" type = "tel" placeholder = "Please enter a vaild mobile number" (keyup) = "showDefaultRelationMobileerror($event)"  [dropSpecialCharacters] = "false" mask = "+1 000 000-0000">

Нет необходимости использовать ngModel с formControlName.

Chintan Kotadiya 30.05.2019 12:24
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
1
876
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование ngModel вместе с formControlName устарело, начиная с Angular 6 (https://angular.io/api/forms/FormControlName#use-with-ngmodel). Вы можете использовать и то, и другое.

Чтобы использовать реактивные формы в Angular, используйте formControlName, а для использования форм, управляемых шаблонами, вы можете использовать ngModel.

Что касается вашей маски +1 000 000-0000, 1 не распознается ngx-mask как шаблон по умолчанию (см. шаблоны по умолчанию здесь: https://www.npmjs.com/package/ngx-mask#тогда). Вместо этого вы можете установить атрибут prefix

<form [formGroup] = "form">
    <input type = "tel"
           class = "form-control" 
           formControlName = "mobile" 
           placeholder = "Please enter a vaild mobile number" 
           (keyup) = "showDefaultRelationMobileerror($event)"  
           [dropSpecialCharacters] = "false" 
           prefix = "+1"
           mask = " 000 000-0000"
    />
    <button (click) = "resetForm()">Reset</button>
</form>

Чтобы сбросить значение формы, используйте метод reset() из класса formControl в вашем компоненте.

    form: FormGroup;

    ngOnInit() {
        this.form = new FormGroup({
            'mobile': new FormControl()
        });
    }

    resetForm() {
        this.form.get('mobile').reset()
    }

Другие вопросы по теме