- Angular UI Development with PrimeNG
- Sudheer Jonna Oleg Varaksin
- 378字
- 2021-07-15 17:32:56
Forms
Forms are the main building blocks in every web application. Angular offers two approaches to build forms: template-driven forms and reactive forms. This section gives you a short overview of template-driven forms.
We already mentioned two directives: NgForm and NgModel. The first directive creates a FormGroup instance and binds it to a form in order to track aggregate form value and validation status. The second one creates a FormControl instance and binds it to the corresponding form element. The FormControl instance tracks the value and the status of the form element. Each input element should have a name property that is required to register the FormControl by the FormGroup under the name you assigned to the name attribute. How to deal with this tracked data? You can export the NgForm and NgModel directives into local template variables such as #f="ngForm" and #i="ngModel", respectively. Here, f and i are local template variables that give you access to the value and status of FormGroup and FormControl, respectively. This is possible because the properties from FormGroup and FormControl are duplicated on the directives themselves. With this knowledge in hand, you can now check if the whole form or a particular form element:
- Is valid (valid and invalid properties)
- Has been visited (touched and untouched properties)
- Has some changed value (dirty and pristine properties)
The next example illustrates the basic concept:
<form #f="ngForm" (ngSubmit)="onSubmit(f)" novalidate>
<label for="name">Name</label>
<input type="text" id=name" name="name" required
[(ngModel)]="name" #i="ngModel">
<div [hidden]="i.valid || i.pristine">
Name is required
</div>
<button>Submit</button>
</form>
// Output values and states
Input value: {{i.value}}
Is input valid? {{i.valid}}
Input visited? {{i.touched}}
Input value changed? {{i.dirty}}
Form input values: {{f.value | json}}
Is form valid? {{f.valid}}
Form visited? {{f.touched}}
Form input values changed? {{f.dirty}}
The NgModel directive also updates the corresponding form element with specific CSS classes that reflect the element's state. The following classes are added/removed dependent on the current state:
This is handy for styling. For example, in case of validation errors, you can set red borders around input elements:
input.ng-dirty.ng-invalid {
border: solid 1px red;
}
- HTML5+CSS3王者歸來
- Docker and Kubernetes for Java Developers
- DevOps Automation Cookbook
- Silverlight魔幻銀燈
- SAP BusinessObjects Dashboards 4.1 Cookbook
- 名師講壇:Spring實戰(zhàn)開發(fā)(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- 編程菜鳥學(xué)Python數(shù)據(jù)分析
- Webpack實戰(zhàn):入門、進(jìn)階與調(diào)優(yōu)
- Getting Started with Eclipse Juno
- Canvas Cookbook
- Delphi開發(fā)典型模塊大全(修訂版)
- C++程序設(shè)計
- Arduino機(jī)器人系統(tǒng)設(shè)計及開發(fā)
- 會當(dāng)凌絕頂:Java開發(fā)修行實錄
- Flink核心技術(shù):源碼剖析與特性開發(fā)