What is ngx-mask?
ngx-mask is an Angular library that provides input masking capabilities. It allows developers to define patterns for input fields, ensuring that users enter data in a specific format. This is particularly useful for fields like phone numbers, dates, and credit card numbers.
What are ngx-mask's main functionalities?
Basic Input Masking
This feature allows you to apply a basic mask to an input field. In this example, the input field will only accept numbers in the format of '0000-0000-0000-0000', which is useful for credit card numbers.
<input type='text' mask='0000-0000-0000-0000' />
Date Masking
This feature allows you to apply a date mask to an input field. The input field will only accept dates in the format of 'DD/MM/YYYY'.
<input type='text' mask='00/00/0000' />
Custom Masking
This feature allows you to create custom masks. In this example, the input field will accept a pattern like 'A0A 0A0', which is useful for postal codes.
<input type='text' mask='A0A 0A0' />
Dynamic Masking
This feature allows you to apply a mask dynamically based on a variable. The 'dynamicMask' variable can be changed at runtime to apply different masks.
<input type='text' [mask]='dynamicMask' />
Other packages similar to ngx-mask
text-mask
text-mask is a library that provides input masking for various frameworks including Angular, React, and Vue. It offers similar functionality to ngx-mask but is more versatile as it supports multiple frameworks.
cleave.js
cleave.js is a JavaScript library for formatting input fields. It supports a wide range of input types including credit card numbers, phone numbers, and dates. Compared to ngx-mask, cleave.js offers more built-in formats and is framework-agnostic.
imask
imask is a versatile input masking library that supports a wide range of input types and custom masks. It is similar to ngx-mask but offers more advanced features like dynamic mask changing and custom mask definitions.
ngx-mask
Installing
$ npm install --save ngx-mask
Quickstart
Import ngx-mask module in Angular app.
import {NgxMaskModule} from 'ngx-mask'
(...)
@NgModule({
(...)
imports: [
NgxMaskModule.forRoot(options)
]
(...)
})
Then, just define masks in inputs.
Usage
<input type='text' mask='{here comes your mask}' >
Examples
mask | example |
---|
9999-99-99 | 2017-04-15 |
000.000.000-99 | 048.457.987-98 |
AAAA | 0F6g |
SSSS | asDF |
Mask Options
You can define your custom options for all directives (as object in the mask module) or for each (as attributes for directive)
specialCharacters (string[ ])
We have next default characters:
Usage
<input type='text' specialCharacters="[ '[' ,']' , '*' ]" mask="[00]*[000]" >
Then:
Input value: 789-874.98
Masked value: [78]*[987]
patterns ({ [character: string]: { pattern: RegExp, optional?: boolean})
We have next default patterns:
code | meaning |
---|
0 | digits (like 0 to 9 numbers) |
9 | digits (like 0 to 9 numbers), but optional |
A | letters (uppercase or lowercase) and digits |
S | only letters (uppercase or lowercase) |
Usage:
<input type='text' patterns="{'0': { pattern: new RegExp('\[a-zA-Z\]')}}" mask="(000-000)" >
Then:
Input value: 789HelloWorld
Masked value: (Hel-loW)
dropSpecialCharacters (boolean)
You can choose if mask will drop special character in the model, or not, default value true
Usage
<input type='text' [dropSpecialCharacters]="false" mask="000-000.00" >
Then:
Input value: 789-874.98
Model value: 789-874.98
clearIfNotMatch (boolean)
You can choose clear the input if the input value not match the mask, default value false
Examples
Check the demo.