Bird
Raised Fist0
Angularframework~5 mins

ngForm directive and form state in Angular - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the ngForm directive in Angular?

The ngForm directive automatically creates a form group that tracks the value and validity of form controls inside a form element.

It helps Angular manage form state like whether the form is valid, dirty, or touched.

Click to reveal answer
beginner
Name three key form state properties tracked by ngForm.
  • valid: True if all controls are valid.
  • dirty: True if any control value has changed.
  • touched: True if any control has been focused and then blurred.
Click to reveal answer
intermediate
How does Angular update the ngForm state when a user interacts with form controls?

Angular listens to user input events on form controls and updates the ngForm state properties accordingly.

For example, when a user changes a field, dirty becomes true; when a field loses focus, touched becomes true.

Click to reveal answer
beginner
What does the ngForm directive provide to the template for form validation?

It provides a local template variable that gives access to the form's state and controls.

You can use this variable to check if the form is valid or invalid and disable submit buttons or show error messages.

Click to reveal answer
beginner
Explain the difference between pristine and dirty states in ngForm.

Pristine means the user has not changed the value of any form control yet.

Dirty means the user has changed the value of at least one form control.

These states help track if the form has been modified.

Click to reveal answer
What does the ngForm directive automatically create?
AA new HTML form element
BA JavaScript event listener
CA CSS style for the form
DA form group to track form controls
Which ngForm property becomes true when a user changes any form control value?
Adirty
Btouched
Cvalid
Dpristine
How can you access the form state in the template using ngForm?
AUsing a local template variable on the form element
BBy importing a service
CUsing a CSS class
DBy calling a JavaScript function
What does the touched state indicate in ngForm?
AThe form is valid
BThe form is submitted
CA control has been focused and then blurred
DThe form has not been changed
Which state means the user has not changed any form control value yet?
Adirty
Bpristine
Ctouched
Dinvalid
Describe how the ngForm directive helps manage form state in Angular.
Think about what happens when a user types or clicks in a form.
You got /4 concepts.
    Explain the difference between the dirty and touched states in an Angular form.
    One tracks changes, the other tracks focus.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the ngForm directive do in Angular?
      easy
      A. It tracks the state and validity of a form and its inputs.
      B. It styles the form elements automatically.
      C. It replaces the need for HTML form tags.
      D. It sends form data directly to the server.

      Solution

      1. Step 1: Understand the role of ngForm

        The ngForm directive is used to track the state of a form and its inputs in Angular.
      2. Step 2: Identify what ngForm does not do

        It does not style elements, replace HTML tags, or send data directly; it manages form state and validation.
      3. Final Answer:

        It tracks the state and validity of a form and its inputs. -> Option A
      4. Quick Check:

        ngForm tracks form state = D [OK]
      Hint: Remember: ngForm manages form state, not styling or data sending [OK]
      Common Mistakes:
      • Thinking ngForm styles the form
      • Assuming ngForm replaces HTML form tags
      • Believing ngForm sends data automatically
      2. Which of the following is the correct way to create a local reference to a form using ngForm in Angular?
      easy
      A. ...
      B. ...
      C. ...
      D. ...

      Solution

      1. Step 1: Recall the syntax for local form reference

        To access the form's state, Angular uses a template reference variable with ngForm as its value, like #myForm="ngForm".
      2. Step 2: Check each option's correctness

        ... correctly uses #myForm="ngForm". ... misses the directive name, C misplaces the directive, and D uses incorrect binding syntax.
      3. Final Answer:

        <form #myForm="ngForm"> ... </form> -> Option B
      4. Quick Check:

        Local form reference = #myForm="ngForm" [OK]
      Hint: Use #var="ngForm" to access form state locally [OK]
      Common Mistakes:
      • Omitting the "ngForm" in the reference
      • Using square brackets incorrectly
      • Placing ngForm attribute wrongly
      3. Given this Angular template snippet:
      <form #f="ngForm">
        <input name="email" ngModel required>
        <button [disabled]="!f.form.valid">Submit</button>
      </form>

      What happens to the Submit button when the input is empty?
      medium
      A. The Submit button is enabled regardless of input.
      B. The Submit button is disabled only if the input is touched.
      C. The Submit button is disabled because the form is invalid.
      D. The Submit button is enabled only if the input is dirty.

      Solution

      1. Step 1: Understand form validity with required input

        The input has the required attribute, so if empty, the form is invalid.
      2. Step 2: Analyze the button's disabled binding

        The button is disabled when !f.form.valid is true, meaning when the form is invalid.
      3. Final Answer:

        The Submit button is disabled because the form is invalid. -> Option C
      4. Quick Check:

        Required empty input disables button = B [OK]
      Hint: Button disabled if form invalid (required empty input) [OK]
      Common Mistakes:
      • Thinking button enables on untouched input
      • Confusing dirty and valid states
      • Ignoring required validation effect
      4. Identify the error in this Angular form snippet:
      <form #myForm="ngForm">
        <input name="username" ngModel>
        <button [disabled]="myForm.invalid">Submit</button>
      </form>

      Why does the Submit button remain enabled even when the input is empty?
      medium
      A. The button binding should use myForm.form.invalid instead of myForm.invalid.
      B. The local reference #myForm is incorrectly declared.
      C. The ngModel directive is missing on the input.
      D. The input lacks a validation rule like required, so form is valid.

      Solution

      1. Step 1: Check input validation rules

        The input has no validation like required, so it does not make the form invalid when empty.
      2. Step 2: Confirm form validity property usage

        myForm.invalid is valid shorthand for myForm.form.invalid, so no error there.
      3. Final Answer:

        The input lacks a validation rule like required, so form is valid. -> Option D
      4. Quick Check:

        Missing required means form valid = C [OK]
      Hint: Add required to input to make form invalid when empty [OK]
      Common Mistakes:
      • Assuming myForm.invalid is incorrect syntax
      • Forgetting to add validation rules
      • Thinking ngModel is missing when it is present
      5. You want to disable the Submit button only after the user has changed any input in the form and the form is invalid. Which condition correctly uses ngForm states to achieve this?
      hard
      A. [disabled]="myForm.form.invalid && myForm.form.dirty"
      B. [disabled]="myForm.invalid || myForm.pristine"
      C. [disabled]="!myForm.form.valid && myForm.touched"
      D. [disabled]="myForm.form.valid && myForm.dirty"

      Solution

      1. Step 1: Understand form state properties

        myForm.form.invalid is true if form is invalid; myForm.form.dirty is true if user changed any input.
      2. Step 2: Match condition to requirement

        We want to disable the button only if form is invalid AND user has changed input, so both must be true.
      3. Final Answer:

        [disabled]="myForm.form.invalid && myForm.form.dirty" -> Option A
      4. Quick Check:

        Disable if invalid and dirty = A [OK]
      Hint: Use invalid AND dirty to disable after user changes invalid form [OK]
      Common Mistakes:
      • Using OR instead of AND for disabling
      • Confusing touched with dirty
      • Checking valid instead of invalid
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard