Form validation helps check user input before sending it. Template attributes make it easy to add simple rules right in the HTML.
Form validation with template attributes in Angular
<input type="text" name="fieldName" required minlength="3" maxlength="10" pattern="[a-zA-Z]+" #fieldName="ngModel" ngModel>
Use required to make a field mandatory.
Use minlength, maxlength, and pattern to add more rules.
<input type="email" name="email" required #email="ngModel" ngModel>
<input type="text" name="username" required minlength="4" maxlength="12" #username="ngModel" ngModel>
<input type="password" name="password" required pattern="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}$" #password="ngModel" ngModel>
This Angular component shows a simple form with name and email fields. Both fields use template attributes for validation. Error messages appear when the user touches a field and leaves it invalid. The submit button is disabled until the form is valid. When submitted, an alert shows success.
import { Component } from '@angular/core'; @Component({ selector: 'app-simple-form', template: ` <form #formRef="ngForm" (ngSubmit)="submitForm()"> <label for="name">Name:</label> <input type="text" id="name" name="name" required minlength="3" maxlength="15" #name="ngModel" ngModel> <div *ngIf="name.invalid && name.touched" style="color: red;"> <small *ngIf="name.errors?.required">Name is required.</small> <small *ngIf="name.errors?.minlength">Name must be at least 3 characters.</small> <small *ngIf="name.errors?.maxlength">Name cannot exceed 15 characters.</small> </div> <label for="email">Email:</label> <input type="email" id="email" name="email" required #email="ngModel" ngModel> <div *ngIf="email.invalid && email.touched" style="color: red;"> <small *ngIf="email.errors?.required">Email is required.</small> <small *ngIf="email.errors?.email">Enter a valid email.</small> </div> <button type="submit" [disabled]="formRef.invalid">Submit</button> </form> ` }) export class SimpleFormComponent { submitForm() { alert('Form submitted successfully!'); } }
Use #fieldName="ngModel" to access validation state in the template.
Validation messages show only after the user touches the input to avoid confusion.
Disabling the submit button prevents sending invalid data.
Template attributes let you add simple validation rules directly in HTML.
Angular's ngModel and template references help show validation feedback.
Always give users clear messages and disable submit until the form is valid.
Practice
required or minlength in Angular forms?Solution
Step 1: Understand template attributes role
Template attributes likerequiredandminlengthare used in the HTML to set validation rules simply and declaratively.Step 2: Differentiate from other form tasks
These attributes do not handle styling, complex logic, or submission events but focus on validation rules in the template.Final Answer:
To add simple validation rules directly in the HTML template -> Option BQuick Check:
Template attributes = simple validation rules [OK]
- Confusing validation attributes with styling
- Thinking validation logic must be in the component class
- Assuming template attributes handle form submission
Solution
Step 1: Recall standard HTML validation syntax
Therequiredattribute is a standard HTML attribute used asrequiredwithout brackets or extra directives.Step 2: Identify Angular template attribute usage
Angular supports standard HTML validation attributes directly in the template, sorequiredalone is correct.Final Answer:
<input type="text" required> -> Option CQuick Check:
Use plainrequiredattribute for required fields [OK]
- Using Angular binding syntax for static required attribute
- Confusing Angular directives with HTML attributes
- Adding non-existent attributes like validate-required
<input type="text" name="username" ngModel required minlength="4" #usernameRef="ngModel"> <div *ngIf="usernameRef.invalid && usernameRef.touched"> <small *ngIf="usernameRef.errors?.required">Username is required.</small> <small *ngIf="usernameRef.errors?.minlength">Minimum 4 characters.</small> </div>
What will happen if the user types "abc" and then clicks outside the input?
Solution
Step 1: Check input value against validation rules
The input value "abc" has 3 characters, which is less than the minlength of 4, so minlength validation fails.Step 2: Determine which error messages show on invalid and touched
The input is not empty, so required is satisfied. SinceusernameRef.invalidandusernameRef.touchedare true, only the minlength error message appears.Final Answer:
The message "Minimum 4 characters." will be shown -> Option AQuick Check:
Input too short = minlength error shown [OK]
- Showing required error when input is not empty
- Showing no message when input is invalid and touched
- Showing both errors when only one applies
<input type="email" name="email" ngModel required #emailRef> <div *ngIf="emailRef.invalid && emailRef.touched"> <small *ngIf="emailRef.errors.required">Email is required.</small> <small *ngIf="emailRef.errors.email">Invalid email format.</small> </div>
Solution
Step 1: Check template reference variable usage
The template reference variable#emailRefis used to access validation state, but it lacks the export="ngModel"which is needed to accessinvalidanderrors.Step 2: Validate other parts
Therequiredattribute is correct as is, AND logic for showing errors is appropriate, and input type "email" is valid for email validation.Final Answer:
Missing template reference variable export like #emailRef="ngModel" -> Option DQuick Check:
Template ref must export ngModel for validation access [OK]
- Omitting ="ngModel" in template reference variable
- Changing required attribute to binding unnecessarily
- Misusing logical operators in *ngIf
- Changing input type incorrectly
<form #myForm="ngForm"> <input name="email" ngModel required email> <button type="submit" [disabled]="???">Submit</button> </form>
What should replace
??? to disable the button until the form is valid?Solution
Step 1: Understand form validity properties
The form object has a propertyinvalidwhich is true when the form is not valid, andvalidwhich is true when valid.Step 2: Choose the best expression to disable button
Disabling the button whenmyForm.invalidis true means the button is disabled until the form becomes valid. UsingmyForm.validwould disable when valid (incorrect). Other options relate to touch or pristine state, not validity.Final Answer:
myForm.invalid -> Option AQuick Check:
Disable button when form.invalid is true [OK]
- Using myForm.valid instead of myForm.invalid
- Disabling based on touched or pristine instead of validity
- Confusing valid and invalid properties
Ready to prove it?
Pass the test and this pattern moves unknown
