===== Forms ===== Vital to business applications Create an experience that guides the user e1fficiently and effectively through the workflow. Developers * Data binding * Change tracking * Validation * Visual feedback * Error messages * Form submission ** Angular Forms ** //** Template Driven Forms **// * Heavy on the component template //** Reactive Forms **// * Heavy on the component class ==== Template Driven Forms (TDF) ==== * Easy to use and similar to Angular JS Forms * Two way data binding with ngModel * Bulky HTML and minimal component code * Automatically tracks the form and form elements state and validity * Unit testing is a challenge --> 브라우저 * Readablility decreases with complex forms and validations * Suitable for simple scenarios === Track Control State and validity === 해쉬(#)이름에 의해서 사용가능하다. 적용되는 class는 {{ name.className }}로 확인 가능하다. ^State ^Class if true ^Class if false^ |The control has been visited.|ng-touched|ng-untouched| |The control's value has changed.|ng-dirty|ng-pristine| |The control's value value is valid.|ng-valid|ng-invalid| === ngModel properties === ^Class ^Property ^ |ng-untouched |untouched | |ng-touched |touched | |ng-pristine |pristine | |ng-dirty |dirty | |ng-valid |valid | |ng-invalid |invalid |
{{ name.className }} {{ name.touched }}
#name="ngModel"에 의해서 ngModel property에 접근 할 수 있다. === class property적용 === **[class.is-invalid]="name.invalid"**에 의해서 is-invalid를 적용한다.