This form collects an email and a message. It checks if the email is valid and shows an error if not. The send button is disabled until the email is correct. When sent, it shows a thank you alert and clears the form.
Angular
import { Component } from'@angular/core';
import { FormGroup, FormControl, Validators } from'@angular/forms';
@Component({
selector: 'app-contact-form',
template: `
<form [formGroup]="contactForm" (ngSubmit)="submitForm()">
<label for="email">Email:</label>
<input id="email" formControlName="email" placeholder="Enter your email" aria-label="Email">
<div *ngIf="email.invalid && email.touched" style="color: red;">
Please enter a valid email.
</div>
<label for="message">Message:</label>
<textarea id="message" formControlName="message" placeholder="Your message" aria-label="Message"></textarea>
<button type="submit" [disabled]="contactForm.invalid">Send</button>
</form>
`
})
exportclass ContactFormComponent {
contactForm = new FormGroup({
email: new FormControl('', [Validators.required, Validators.email]),
message: new FormControl('')
});
get email() {
returnthis.contactForm.get('email')!;
}
submitForm() {
if (this.contactForm.valid) {
console.log('Form data:', this.contactForm.value);
alert('Thank you for your message!');
this.contactForm.reset();
}
}
}
OutputSuccess
Important Notes
Always add validation to catch mistakes early.
Use aria-label for better accessibility.
Disable the submit button if the form is invalid to guide users.
Summary
Forms let users send info to your app.
Angular makes forms easy with FormGroup and FormControl.
Validation and accessibility improve user experience.
Practice
(1/5)
1. Why are forms important in Angular applications?
easy
A. They allow users to input and send data to the app.
B. They automatically style the app without CSS.
C. They replace the need for components.
D. They make the app run faster without code changes.
Solution
Step 1: Understand the role of forms in apps
Forms collect user input, which is essential for interactive apps.
Step 2: Connect to Angular's form handling
Angular uses forms to manage and validate user data before processing.
Final Answer:
They allow users to input and send data to the app. -> Option A
Quick Check:
Forms collect user data [OK]
Hint: Forms handle user input and data submission [OK]
Common Mistakes:
Thinking forms only style the app
Believing forms replace components
Assuming forms speed up app without code
2. Which of the following is the correct way to create a form control in Angular?
easy
A. const name = new FormControl('');
B. const name = FormControl();
C. const name = new formcontrol('');
D. const name = FormGroup('');
Solution
Step 1: Recall Angular form control syntax
FormControl is a class and must be instantiated with 'new'.
Step 2: Check capitalization and usage
Correct syntax uses 'new FormControl('')', with capital F and C.
Final Answer:
const name = new FormControl(''); -> Option A
Quick Check:
FormControl requires 'new' keyword [OK]
Hint: Use 'new FormControl()' with capital letters [OK]
Common Mistakes:
Omitting 'new' keyword
Using wrong capitalization
Confusing FormControl with FormGroup
3. Given this Angular form setup:
this.profileForm = new FormGroup({ firstName: new FormControl(''), lastName: new FormControl('') }); console.log(this.profileForm.value);
What will be logged to the console right after this code runs?
medium
A. { firstName: null, lastName: null }
B. undefined
C. null
D. { firstName: '', lastName: '' }
Solution
Step 1: Understand FormGroup initial values
Each FormControl is initialized with an empty string ''.
Step 2: Check the value property of FormGroup
FormGroup.value returns an object with keys and their current values.
Final Answer:
{ firstName: '', lastName: '' } -> Option D
Quick Check:
FormGroup.value returns empty strings object [OK]
Hint: FormGroup.value shows current control values as object [OK]
Common Mistakes:
Expecting null or undefined instead of empty strings
Confusing FormGroup.value with FormControl instance
Assuming console logs FormGroup object directly
4. What is wrong with this Angular form code?
this.loginForm = new FormGroup({ email: FormControl(''), password: new FormControl('') });
medium
A. FormGroup cannot have more than one control.
B. FormControl cannot be used inside FormGroup.
C. Missing 'new' keyword before FormControl for email control.
D. Password control should be FormGroup, not FormControl.
Solution
Step 1: Check syntax for creating FormControl instances
Each FormControl must be created with 'new FormControl()'.
Step 2: Identify the error in email control
Email control is missing 'new', causing a syntax/runtime error.
Final Answer:
Missing 'new' keyword before FormControl for email control. -> Option C
Quick Check:
Every FormControl needs 'new' [OK]
Hint: Remember 'new' before every FormControl instance [OK]
Common Mistakes:
Omitting 'new' keyword
Thinking FormGroup limits controls to one
Confusing FormControl and FormGroup roles
5. You want to create a form that requires a user to enter a non-empty email and password. Which Angular approach best ensures the form is valid only when both fields are filled?
hard
A. Use only FormControl for email and ignore password validation.
B. Use FormGroup with FormControls and add Validators.required to each control.
C. Use FormGroup without validators and check values manually after submit.
D. Use FormGroup with empty FormControls and no validation.
Solution
Step 1: Understand Angular validation
Validators.required ensures a control is not empty and marks form invalid if empty.
Step 2: Apply validators to both email and password controls
Adding Validators.required to both controls enforces non-empty input before form is valid.
Step 3: Compare other options
Manual checks or missing validators do not enforce form validity automatically.
Final Answer:
Use FormGroup with FormControls and add Validators.required to each control. -> Option B
Quick Check:
Validators.required on controls = form valid only if filled [OK]
Hint: Add Validators.required to controls for mandatory fields [OK]
Common Mistakes:
Skipping validators and relying on manual checks
Validating only one field
Assuming empty controls are valid
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.