Reactive form in Angular Timepicker component
27 Apr 20244 minutes to read
TimePicker is a form component and validation is playing vital role in forms to get the valid data. Here to showcase the TimePicker with form validations we have used the reactive form.
- The reactive forms uses the reactive model-driven technique to handle form data between component and view, due to that we also call it as the model-driven forms. It’s listen the form data changes between App component and view also returns the valid states and values of form elements.
For more details about Reactive Forms refer: https://angular.io/guide/reactive-forms.
- For the reactive forms, import a
ReactiveFormsModuleinto app module as well as theFormGroup,
FormControlshould be imported to app component. TheFormGroupis used to declareformGroupNamefor the form and theFormControlis used to declareformControlNamefor form controls. You can declare theformControlNameto TimePicker component as usual. Then, create a value object to theFormGroupand each value will be the default value of the form control.
The following example demonstrates how to use the reactive forms.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { TimePickerModule } from '@syncfusion/ej2-angular-calendars'
import { ButtonModule } from '@syncfusion/ej2-angular-buttons'
import { Component, ViewChild, OnInit, ElementRef, Inject } from '@angular/core';
import { TimePickerComponent } from '@syncfusion/ej2-angular-calendars';
import { FormValidator, FormValidatorModel } from '@syncfusion/ej2-inputs';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { ButtonComponent } from '@syncfusion/ej2-angular-buttons';
import { FormsModule } from '@angular/forms';
@Component({
imports: [
FormsModule, ReactiveFormsModule, TimePickerModule, ButtonModule
],
standalone: true,
selector: 'app-root',
templateUrl: './template.html'
})
export class AppComponent implements OnInit {
@ViewChild('ejTimePicker') ejTimePicker?: TimePickerComponent;
public targetElement?: HTMLElement;
public placeholder: String = 'Select a time';
skillForm?: FormGroup | any;
build: FormBuilder;
constructor(@Inject(FormBuilder) private builder: FormBuilder) {
this.build = builder;
this.createForm();
}
ngOnInit(): void {
}
createForm() {
this.skillForm = this.build.group({
timepicker: ['', Validators.required],
username: ['', Validators.required],
usermail: ['', Validators.email],
});
}
get username() {
return this.skillForm?.get('username');
}
get timepicker() {
return this.skillForm?.get('timepicker');
}
get usermail() {
return this.skillForm?.get('usermail');
}
onSubmit() {
alert("Form Submitted!");
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));