Option1:
Вы можете добавить переменную isSubmitted
bool, чтобы указать, была ли нажата кнопка отправки пользователем, и установить для нее значение true в onSubmit()
:
* 1006. *
и установите ngIf
на это:
<span *ngIf="(form.get('name').invalid && form.get('name').touched) ||
(form.get('name').untouched && isSubmitted)">
Not Valid
</span>
- Сообщения об ошибках не видны при загрузке страницы;
Первый линия form.get('name').invalid && form.get('name').touched
ответственная.
Сообщение об ошибке для поля показывает, если пользователь вводит в поле что-то недопустимое;
Angular framework делает это по умолчанию.
Сообщение об ошибке показывает, отправлена ли форма и есть ли ошибка в этом поле.
Вторая строка form.get('name').untouched && isSubmitted
Option2
Как и в этой замечательной статье , при отправке вы можете перебрать все контроллеры и установить их как затронутые с помощью:
Object.keys(this.form.controls).forEach(field => {
const control = this.form.get(field);
control.markAsTouched({ onlySelf: true });
});
Таким образом, вы можете оставить разметку немного чище:
<span *ngIf="form.get('name').invalid && form.get('name').touched">
Not Valid
</span>