Getting started with Angular Numerictextbox component
11 Jul 202415 minutes to read
The following section explains the steps required to create the NumericTextBox component and also it demonstrates the basic usage of the NumericTextBox.
Dependencies
The following list of dependencies are required to use the NumericTextBox component in your application.
|-- @syncfusion/ej2-angular-inputs
|-- @syncfusion/ej2-angular-base
|-- @syncfusion/ej2-angular-popups
|-- @syncfusion/ej2-angular-buttons
|-- @syncfusion/ej2-angular-splitbuttons
|-- @syncfusion/ej2-inputs
|-- @syncfusion/ej2-base
|-- @syncfusion/ej2-popups
|-- @syncfusion/ej2-buttons
|-- @syncfusion/ej2-splitbuttons
Setup angular environment
Angular provides the easiest way to set angular CLI projects using Angular CLI
tool.
Install the CLI application globally to your machine.
npm install -g @angular/cli
Create a new application
ng new syncfusion-angular-numerictextbox
By default, it install the CSS style base application. To setup with SCSS, pass –style=scss argument on create project.
Example code snippet.
ng new syncfusion-angular-numerictextbox --style=scss
Navigate to the created project folder.
cd syncfusion-angular-numerictextbox
Installing Syncfusion NumericTextBox Package
Syncfusion packages are distributed in npm as @syncfusion
scoped packages. You can get all the Angular Syncfusion package from npm link.
Currently, Syncfusion provides two types of package structures for Angular components,
- Ivy library distribution package format
- Angular compatibility compiler(Angular’s legacy compilation and rendering pipeline) package.
Ivy library distribution package
Syncfusion Angular packages(>=20.2.36
) has been moved to the Ivy distribution to support the Angular Ivy rendering engine and the package are compatible with Angular version 12 and above. To download the package use the below command.
Add @syncfusion/ej2-angular-inputs
package to the application.
npm install @syncfusion/ej2-angular-inputs --save
Angular compatibility compiled package(ngcc)
For Angular version below 12, you can use the legacy (ngcc) package of the Syncfusion Angular components. To download the ngcc
package use the below.
Add @syncfusion/ej2-angular-inputs@ngcc
package to the application.
npm install @syncfusion/ej2-angular-inputs@ngcc --save
To mention the ngcc package in the package.json
file, add the suffix -ngcc
with the package version as below.
@syncfusion/ej2-angular-inputs:"20.2.38-ngcc"
Note: If the ngcc tag is not specified while installing the package, the Ivy Library Package will be installed and this package will throw a warning.
Adding CSS reference
The following CSS files are available in ../node_modules/@syncfusion
package folder.
This can be referenced in [src/styles.css] using following code.
@import '../node_modules/@syncfusion/ej2-base/styles/material.css';
@import '../node_modules/@syncfusion/ej2-buttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-inputs/styles/material.css';
@import '../node_modules/@syncfusion/ej2-popups/styles/material.css';
@import '../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css';
@import '../node_modules/@syncfusion/ej2-angular-inputs/styles/material.css';
Adding NumericTextBox component
Modify the template in [src/app/app.component.ts] file to render the NumericTextBox component.
Add the Angular NumericTextBox by using <ejs-numerictextbox>
selector in template
section of the app.component.ts file..
import { NumericTextBoxModule } from '@syncfusion/ej2-angular-inputs'
import { FormsModule } from '@angular/forms'
import { Component } from '@angular/core';
@Component({
imports: [
NumericTextBoxModule,
FormsModule
],
standalone: true,
selector: 'app-root',
// specifies the template string for the NumericTextBox component
template: `<ejs-numerictextbox value='10'></ejs-numerictextbox>`
})
export class AppComponent { }
Note: If you want to refer the combined component styles, please make use of our
CRG
(Custom Resource Generator) in your application.
Running the application
After completing the configuration required to render a basic NumericTextBox, run the following command to display the output in your default browser.
ng serve
The following example illustrates the output in your browser.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { NumericTextBoxModule } from '@syncfusion/ej2-angular-inputs'
import { FormsModule } from '@angular/forms'
import { Component } from '@angular/core';
@Component({
imports: [
NumericTextBoxModule,
FormsModule
],
standalone: true,
selector: 'app-root',
// specifies the template string for the NumericTextBox component
template: `<ejs-numerictextbox value='10'></ejs-numerictextbox>`,
})
export class AppComponent {
constructor() {
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Range validation
You can set the minimum and maximum range of values in the NumericTextBox using the min
and max
properties, so the numeric value should be in the min and max range.
The validation behavior depends on the strictMode
property.
The below example demonstrates range validation.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { NumericTextBoxModule } from '@syncfusion/ej2-angular-inputs'
import { FormsModule } from '@angular/forms'
import { Component, ViewChild } from '@angular/core';
@Component({
imports: [
NumericTextBoxModule,
FormsModule
],
standalone: true,
selector: 'app-root',
// specifies the template string for the NumericTextBox component
// sets the minimum and maximum range values
// strictMode has been enabled by defualt
template: `
<ejs-numerictextbox min='10' max='20' value='16' step='2'></ejs-numerictextbox>
`
})
export class AppComponent {
constructor() {
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Formatting the value
User can set the format of the NumericTextBox component using format
property. The value will be displayed in the specified format, when the component is in focused out state. For more information about formatting the value, refer to this link.
The below example demonstrates format the value by using currency format value c2
.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { NumericTextBoxModule } from '@syncfusion/ej2-angular-inputs'
import { FormsModule } from '@angular/forms'
import { Component } from '@angular/core';
@Component({
imports: [
NumericTextBoxModule,
FormsModule
],
standalone: true,
selector: 'app-root',
// specifies the template string for the NumericTextBox component
// sets currency with 2 numbers of decimal places format
template: `
<ejs-numerictextbox format='c2' value='10'></ejs-numerictextbox>
`
})
export class AppComponent {
constructor() {
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Precision of numbers
You can restrict the number of decimals to be entered in the NumericTextBox by using the decimals
and validateDecimalOnType
properties.
So, you can’t enter the number whose precision is greater than the mentioned decimals.
- If
validateDecimalOnType
is false, number of decimals will not be restricted.
Else, number of decimals will be restricted while typing in the NumericTextBox.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { NumericTextBoxModule } from '@syncfusion/ej2-angular-inputs'
import { FormsModule } from '@angular/forms'
import { Component } from '@angular/core';
@Component({
imports: [
NumericTextBoxModule,
FormsModule
],
standalone: true,
selector: 'app-root',
// specifies the template string for the NumericTextBox component
// restricts number of decimals to be entered in the NumericTextBox by using validateDecimalOnType property
// sets number of decimal places to be allowed by the NumericTextBox
template: `
<div class='wrap'>
<ejs-numerictextbox [validateDecimalOnType]='true' decimals='3' format='n3' value='10' placeholder='ValidateDecimalOnType Enabled' floatLabelType= 'Auto'></ejs-numerictextbox>
</div>
<div class='wrap'>
<ejs-numerictextbox decimals='3' format='n3' value='10' placeholder='ValidateDecimalOnType Disabled' floatLabelType= 'Auto'></ejs-numerictextbox>
</div>
`
})
export class AppComponent {
constructor() {
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Two way binding
In NumericTextBox, the value
property supports two-way binding functionality.
The below example demonstrates two-way binding functionality with the NumericTextBox and HTML input element.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { NumericTextBoxModule } from '@syncfusion/ej2-angular-inputs'
import { FormsModule } from '@angular/forms'
import { Component } from '@angular/core';
@Component({
imports: [
NumericTextBoxModule,
FormsModule
],
standalone: true,
selector: 'app-root',
// specifies the template string for the NumericTextBox component and
// input element for checking the two-way binding support using value property
template: `
<div class='e-input-group' style='margin-bottom:30px'>
<ejs-input class='e-input' type='text' [(ngModel)]='value' placeholder='Enter a number' />
</div>
<ejs-numerictextbox [(value)]='value'></ejs-numerictextbox>
`
})
export class AppComponent {
value: any;
constructor() {
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Reactive form
NumericTextBox is a form component and validation is playing vital role in forms to get the valid data.
Here to showcase the NumericTextBox with form validations we have used the reactive form.
For more details about Reactive Forms refer: https://angular.dev/guide/forms/reactive-forms
.
- To use reactive forms, import
ReactiveFormsModule
from the@angular/forms
package and add it to your NgModule’s imports array. In addition to this,FormGroup
,FormControl
should be imported to the app component. - The
FormGroup
is used to declareformGroupName
for the form. The constructor of thisFormGroup
then takes an object, that can contain sub-form-groups andFormControls
. - The
FormControl
is used to declareformControlName
for form controls.
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 { NumericTextBoxModule } from '@syncfusion/ej2-angular-inputs'
import { ButtonModule } from '@syncfusion/ej2-angular-buttons'
import { Component, Inject } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
imports: [
FormsModule,ReactiveFormsModule, NumericTextBoxModule, ButtonModule
],
standalone: true,
selector: 'app-root',
templateUrl: './template.html',
})
export class AppComponent {
skillForm?: FormGroup | any;
build: FormBuilder;
constructor(@Inject(FormBuilder) private builder: FormBuilder) {
this.build = builder;
this.createForm();
}
createForm() {
this.skillForm = this.build.group({
numeric: ['', Validators.required],
username: ['', Validators.required],
});
}
get username() { return this.skillForm?.get('username'); }
get numeric() { return this.skillForm?.get('numeric'); }
onSubmit() {
alert("You have entered the value: " + this.numeric?.value );
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
See Also
- How to perform custom validation using FormValidator
- How to customize the UI appearance of the control
- How to customize the spin button’s up and down arrow
- How to customize the step value and hide spin buttons
- How to prevent nullable input in NumericTextBox
- How to maintain trailing zeros in NumericTextBox