Angular2 - Как установить свойство "touch" в форме в true
У меня есть реактивная форма в моем компоненте, и я хочу установить свойство touched
для каждого из входов равным true
. Мой текущий код делает это, но выдает ошибку Cannot set property touched of #<AbstractControl> which has only a getter
:
addressForm: FormGroup;
...
this.addressForm = this._fb.group({
street: ["", [<any>Validators.required]],
city: ["", [<any>Validators.required]],
state: ["", [<any>Validators.required]],
zipCode: ["", [<any>Validators.required]],
country: ["", [<any>Validators.required]]
});
...
for (var key in this.addressForm.controls) {
this.addressForm.controls[key].touched = true;
}
Как я могу установить touched
значение каждого вклада true
?
Ответы
Ответ 1
Для этого существует довольно простой способ: markAsTouched
. Достаточно использовать его в группе форм.
this.addressForm.markAsTouched()
Если вы хотите по какой-либо причине пометить все элементы управления вручную, они сами имеют этот метод.
markAsTouched
- это метод элементов формы AbstractControl
, наследуемых от. Из любопытства вы можете захотеть посетить файл декларации @angular/forms/src/model.d.ts
, чтобы найти еще несколько интересных методов объектов формы. Или просто посетите документацию.
Ответ 2
Если вы используете #myForm="ngForm"
в своем элементе формы HTML, у вас есть доступ к myForm.submitted
в HTML, поэтому вам не нужно беспокоиться о .touched