Стан моделі та валідація

Стан моделі

Застосування директиви 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?