Я не могу сбросить поле формы после отправки формы, тогда как если я удалю маску = "+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
устарело, начиная с 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()
}
Нет необходимости использовать
ngModel
сformControlName
.