Using Template-driven Forms for Simple Data Handling

Learn to implement template-driven forms in Angular for straightforward data handling and validation, suitable for small-scale applications.

0 likes
38 views

Rule Content

{
  "title": "Using Template-driven Forms for Simple Data Handling",
  "description": "Implement template-driven forms in Angular for straightforward data handling and validation, suitable for small-scale applications.",
  "category": "Angular Cursor Rules",
  "rules": [
    {
      "name": "Import FormsModule",
      "description": "Ensure that the FormsModule is imported in your Angular module to enable template-driven forms.",
      "code": "import { FormsModule } from '@angular/forms';\n\n@NgModule({\n  imports: [\n    BrowserModule,\n    FormsModule\n  ],\n  declarations: [\n    AppComponent\n  ],\n  bootstrap: [AppComponent]\n})\nexport class AppModule {}"
    },
    {
      "name": "Use ngModel for Two-Way Data Binding",
      "description": "Utilize the ngModel directive to bind form controls to component properties, enabling two-way data binding.",
      "code": "<input type=\"text\" id=\"username\" name=\"username\" [(ngModel)]=\"username\" required />"
    },
    {
      "name": "Implement Form Validation",
      "description": "Apply built-in validators like required, minlength, and email to form controls to enforce input validation.",
      "code": "<input type=\"email\" id=\"email\" name=\"email\" [(ngModel)]=\"email\" required email />"
    },
    {
      "name": "Handle Form Submission",
      "description": "Use the ngSubmit directive to handle form submission and process form data in the component.",
      "code": "<form (ngSubmit)=\"onSubmit()\">\n  <!-- form controls -->\n  <button type=\"submit\">Submit</button>\n</form>\n\nexport class AppComponent {\n  onSubmit() {\n    // Process form data\n  }\n}"
    },
    {
      "name": "Display Validation Error Messages",
      "description": "Show error messages conditionally based on the validity state of form controls to provide user feedback.",
      "code": "<div *ngIf=\"email.invalid && email.touched\" class=\"error-message\">\n  <div *ngIf=\"email.errors?.required\">Email is required.</div>\n  <div *ngIf=\"email.errors?.email\">Invalid email format.</div>\n</div>"
    },
    {
      "name": "Style Error Messages",
      "description": "Apply CSS styles to error messages to enhance user experience and accessibility.",
      "code": ".error-message {\n  color: red;\n  font-size: 12px;\n  margin-top: 5px;\n}"
    }
  ]
}