Angular: Error: Cannot find control with name: 'email' (reactive forms)
A formControlName points at a control that does not exist in the bound FormGroup.
Cannot find control with nameCannot find control with pathError: Cannot find control with name: 'email'There is no FormControl instance attached to form control element with name Meaning
With reactive forms the name in the template must match a key in the FormGroup exactly (case-sensitive). The error also appears when the control is added later (after the template first renders), when the form group is undefined, or when a nested group needs formGroupName.
Common causes
- Name in
formControlNamediffers from the key in theFormGroup(typo, case) - The
FormGroupis created after the template renders (async data) - Nested group not wrapped in
formGroupName/[formGroup] - Control removed with
removeControlor form re-created - Using the same name under the wrong parent group
⚡ Quick fix
- Make the template name identical to the group key
- Build the form in the constructor or guard the template with
@if (form) - Use
formGroupNamefor nested groups
Detailed fix by platform
Angular
form = this.fb.group({ email: [''] })and<input formControlName="email">- For nested data:
<div formGroupName="address"><input formControlName="city"></div>
Code examples
Names must match
form = this.fb.nonNullable.group({
email: ['', [Validators.required, Validators.email]],
address: this.fb.nonNullable.group({ city: [''] }),
});
// template:
// <form [formGroup]="form">
// <input formControlName="email">
// <div formGroupName="address"><input formControlName="city"></div>
// </form>How to diagnose
- Name — Spelling and case of the control?
- Timing — Is the FormGroup ready before the template renders?
- Nesting — Parent formGroupName present?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- Can't find stylesheet to import Angular (Sass): Error: Can't find stylesheet to import. @import 'variables';
- Cannot GET /route on refresh Angular (production): Cannot GET /dashboard — 404 when refreshing or opening a deep link
- Component is not resolved: templateUrl Angular tests: Component 'X' is not resolved: templateUrl: ./x.component.html — Did you run and wait for 'resolveComponentResources()'?
Most viewed in Angular
- NullInjectorError Angular: NullInjectorError: No provider for X!
- NullInjectorError: No provider for HttpClient! Angular: NullInjectorError: No provider for HttpClient! — provideHttpClient() missing
- exceeded maximum budget Angular build: Error: bundle initial exceeded maximum budget. Budget 1.00 MB was not met by 120.00 kB with a total of 1.12 MB
Other ways to find it
Where this error sits
Origin: On your device. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 15 Oct 2026