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.
Installing
$ npm install --save ng2-mask
Quickstart
Import ng2-mask module in Angular app.
import {Ng2MaskModule} from 'ng2-mask'
(...)
@NgModule({
(...)
imports: [
Ng2MaskModule
]
(...)
})
Then, just define masks in inputs.
<input type='text' mask='0000-00-00' >
Documentation
Mask
Usage
<input type='text' mask='{here comes your mask}' >
Params
You construct your mask pattern using these follow codes:
code | meaning |
---|
0 or 9 | digits (like 0 to 9 numbers) |
A | letters (uppercase or lowercase) and digits |
S | only letters (uppercase or lowercase) |
Custom Pattern | Work in Progress |
And you can mix with special characters:
character |
---|
/ |
( |
) |
. |
: |
- |
space |
+ |
Custom characters (WIP) |
Examples
mask | example |
---|
9999-99-99 | 2017-04-15 |
000.000.000-99 | 048.457.987-98 |
AAAA | 0F6g |
SSSS | asDF |
Special characters
You can choose if mask will propagate to model, or not, you just need to set
the boolean attribute specialCharacters
.
Usage
<input type='text' specialCharacters="false" mask="000-000.00" >
Then:
Input value: 789-874.98
Model value: 78987498
Clear if not match
You can choose clear the input if the input value not match the mask, you just need
to set the boolean attribute clearIfNotMatch
Usage
<input type='text' clearIfNotMatch="false" mask="99.99-99" >
Examples
Check the demo.