Style w formularzach - ułatwienia

HTML5 udostępnia pseudo-selektory: invalid i valid dla pól wejściowych.

input[type="text"]:valid {
  border: 2px solid green;
}

input[type="text"]:invalid {
  border: 2px solid red;
}

Niestety, ten system jest raczej nieskomplikowany i wymagałby więcej wysiłku przy złożonych formularzach.

Zamiast pisania dodatkowego kodu oraz tworzenia i egzekwowania własnych klas CSS, aby zarządzać tymi zachowaniami, Angular oferuje kilka klas gotowych do wykorzystania.

/* field value is valid */
.ng-valid {}

/* field value is invalid */
.ng-invalid {}

/* field has not been clicked in, tapped on, or tabbed over */
.ng-untouched {}

/* field has been previously entered */
.ng-touched {}

/* field value is unchanged from the default value */
.ng-pristine {}

/* field value has been modified from the default */
.ng-dirty {}

Zwróć uwagę na trzy pary:

  • ważny/nieważny
  • nietknięte/dotknięte
  • niezmieniony/zmieniony ("brudny")

Te pary mogą być używane w wielu kombinacjach w twoim CSS, aby zmienić styl na podstawie trzech oddzielnych flag, które reprezentują. Angular przełącza się między parami na każdym wejściu, gdy zmienia się stan wejścia.

/* field has been unvisited and unchanged */
input.ng-untouched.ng-pristine {}

/* field has been previously visited, and is invalid */
input.ng-touched.ng-invalid {}

.ng-untouched nie zostanie zastąpione przez.ng-touched dopóki użytkownik nie opuści pola po raz pierwszy

W celach szablonowych Angular daje także dostęp do nieusuniętych właściwości na wejściu, zarówno w kodzie, jak i szablonie:

<input name="myInput" [formControl]="myCustomInput">
<div [hidden]="myCustomInput.pristine">I've been changed</div>