Стан моделі та валідація
Стан моделі
Застосування директиви ngModel не тільки встановлює прив'язку даних, але і дозволяє відстежувати стан елемента вводу. Для встановлення стану Angular застосовує до елементів введення спеціальні CSS класи:
Назви_CSS_класів
Опис
ng-untouched
якщо елемент введення ще не отримував фокус
ng-touched
якщо поле введення вже отримувало фокус, при цьому отримання фокусу не обов'язково повинно супроводжуватися зміною значення в цьому полі
ng-dirty
якщо початкове значення в поле введення було змінено
ng-pristine
якщо значення не змінювався з моменту завантаження сторінки
ng-valid
якщо значення в полі введено коректно
ng-invalid
якщо значення в полі введено НЕ коректне
Приклад:
<input name="title" [(ngModel)]="title" />
В браузері:
<input class="ng-untouched ng-pristine ng-valid" name="title" ng-reflect-name="title" />
Валідація
В Angular ми можемо використовувати валідацію HTML5, яка застосовується у вигляді атрибутів.
Наприклад:
required - поле обов'язкове для заповнення.
pattern - задає регулярний вираз, якому повинні відповідати введені дані.
NgForm
Як правило, при роботі з формами, всі елементи введення не визначаються самі по собі, а поміщаються в стандартний елемент форму - <form></form>
. Застосування даного елемента дозволяє управляти всіма елемента вводу в цілому як однією загальною формою.
Безпосередньо в Angular для роботи з формами визначена спеціальна директива NgForm. Вона створює об'єкт FormGroup і прив'язує його до форми, що дозволяє відстежувати стан форми, управляти її валідацією.
<form #myForm="ngForm"></form>
Завдання.
Зверстати форму для додавання нового todo.
Додати стилі та функціонал.
Поле "Todo Title" повинно бути обов'язкове для заповнення.
Форма не повинна відправлятися, якщо вона є невалідна (якщо дані в поля форми введені не правильно).
import { FormsModule } from '@angular/forms';
@NgModule({
imports: [ FormsModule, //... ]
//...
})
//...
Самостійна робота.
Додати ще одну перевірку доля поля "Todo Title", кількість введених символів повинна бути більше двох.
Використовуючи Bootstrap стилі, відобразити повідомлення для користувача чому поле не валіде.
Last updated
Was this helpful?