Following are the key points discussed later in this article:
Template-driven forms are the most trivial type of form that can be quickly created in Angular 2. Following are key aspects of creating template-driven form.
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { LoginComponent } from './login/login.component';
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ AppComponent, LoginComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
<input type="email"
class="form-control"
id="email"
placeholder="Email"
required
[(ngModel)]="model.email"
name="email"
>
<input type="text"
class="form-control"
id="fullname"
placeholder="Full Name"
required
[(ngModel)]="model.fullname"
name="fullname"
#fullname="ngModel"
>
<div [hidden]="fullname.valid || fullname.pristine"
class="alert alert-danger">
Full name is required
</div>
Reactive forms are based on reactive style of programming. Following are key aspects of reactive forms:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { ReactiveFormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { LoginComponent } from './rlogin/login.component';
@NgModule({
imports: [ BrowserModule, ReactiveFormsModule ],
declarations: [ AppComponent, LoginComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
</pre>
export class LoginComponent {
formErrors = {
'email': '',
'password': ''
};
validationMessages = {
'email': {
'required': 'Email is required.'
},
'password': {
'required': 'Password is required.'
}
};
createForm() {
this.loginForm.valueChanges
.subscribe(data => this.onValueChanged(data));
this.onValueChanged();
}
onValueChanged(data?: any) {
if (!this.loginForm) {
return;
}
const form = this.loginForm;
for (const field in this.formErrors) {
this.formErrors[field] = '';
const control = form.get(field);
if (control && control.dirty && !control.valid) {
const messages = this.validationMessages[field];
for (const key in control.errors) {
this.formErrors[field] += messages[key] + ' ';
}
}
}
}
email = new FormControl('', Validators.required);
loginForm = new FormGroup({
email: new FormControl('', Validators.required)
});
When building a regression model or performing regression analysis to predict a target variable, understanding…
If you've built a "Naive" RAG pipeline, you've probably hit a wall. You've indexed your…
If you're starting with large language models, you must have heard of RAG (Retrieval-Augmented Generation).…
If you've spent any time with Python, you've likely heard the term "Pythonic." It refers…
Large language models (LLMs) have fundamentally transformed our digital landscape, powering everything from chatbots and…
As Large Language Models (LLMs) evolve into autonomous agents, understanding agentic workflow design patterns has…
View Comments
Thanks for sharing the concepts