Skip to content

A fully customizable, one-time password input component for the web built with Angular.

License

Notifications You must be signed in to change notification settings

code-farmz/ng-otp-input

Repository files navigation

npm versionnpmnpm

A fully customizable, one-time password (OTP) input component for the web built with Angular.

GIPHY

Demo | Edit on StackBlitz


Installation

For Angular 16 and above:

npm install --save ng-otp-input

For Angular 12 to 15:

npm install --save [email protected]

For Angular 11 and below:

npm install --save [email protected]

Major Changes in v2

  • Requires Angular 16 or above.
  • Emits null instead of an empty string if no value is supplied.
  • Fully supports Reactive Forms (formControl and ngModel are supported from v2.0.5 onwards).
  • Deprecated the custom formCtrl input property. Use formControl instead.

Usage

Import the Module

For Modules:

import{NgOtpInputModule}from'ng-otp-input'; @NgModule({imports: [ ...otherModules,NgOtpInputModule,],})exportclassAppModule{}

For Standalone Components:

import{NgOtpInputComponent}from'ng-otp-input'; @Component({standalone: true,imports: [NgOtpInputComponent],})exportclassYourComponent{}

Add the Component to Your Template

<!-- With Event Binding --><ng-otp-input(onInputChange)="onOtpChange($event)" [config]="{length: 5 }"></ng-otp-input><!-- Using Reactive FormControl (v2.0.5 and above) --><ng-otp-input[formControl]="yourFormControl" [config]="{length: 5 }"></ng-otp-input>

API Reference

Component Inputs/Outputs

NameTypeRequiredDefaultDescription
disabledbooleanNofalseDisables all inputs when set to true.
onOtpChangeOutputNo--Emits the OTP value on change. Not required if using formControl.
onBlurOutputNo--Triggered when focus is lost from the component.
setValuefunctionNo--Allows programmatic setting of the component value.
configobjectYes{length: 4 }Configuration object for customization (see Config Options below).

Config Options

NameTypeRequiredDefaultDescription
allowNumbersOnlybooleanNofalseRestricts input to numeric values only.
disableAutoFocusbooleanNofalsePrevents automatic focus on load or when setting the value.
containerClassstringNo--Adds a custom CSS class to the container element.
containerStylesobjectNo--Customizes the container styles. Check NgStyle.
inputStylesobjectNo--Customizes the styles of individual inputs.
inputClassstringNo--Adds a custom CSS class to each input box.
isPasswordInputbooleanNofalseMasks input as password fields.
lengthnumberYes4Sets the number of OTP inputs to render.
letterCasestringNo--Converts input to Upper or Lower case.
placeholderstringNo--Sets a placeholder for each input box.
separatorcharNo--Inserts a separator character between input boxes.
showErrorbooleanNofalseHighlights inputs with red borders if formControl is invalid, dirty, or touched.

Advanced Features

Updating Component Value

  • Use formControl or ngModel (v2.0.5 and above) for updates.
  • For earlier versions, use setValue:
@ViewChild(NgOtpInputComponent,{static: false}) ngOtpInput: NgOtpInputComponent;updateOtpValue(){this.ngOtpInput.setValue('12345');// Replace with your OTP value.}

Disabling Inputs

  • Use the disabled property or set the FormControl to a disabled state (v2.0.5+).
  • For earlier versions, use disable method:
this.ngOtpInput.otpForm.disable();

Focus on a Specific Input

consteleId=this.ngOtpInput.getBoxId(0);this.ngOtpInput.focusTo(eleId);

License

License: MIT


Contributing

Show your support by starring the repo! Feel free to open issues or contribute via pull requests.

About

A fully customizable, one-time password input component for the web built with Angular.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published