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}' >
Also you can use mask pipe
Usage
<span>{{phone | mask: '(000) 000-0000'}}</span>
Examples
mask | example |
---|
9999-99-99 | 2017-04-15 |
0*.00 | 2017.22 |
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]="customPatterns" mask="(000-000)" >
and in your component
public customPatterns = {'0': { pattern: new RegExp('\[a-zA-Z\]')}};
Then:
Input value: 789HelloWorld
Masked value: (Hel-loW)
prefix (string)
You can add prefix to you masked value
Usage
<input type='text' prefix="+7 " mask="(000) 000 00 00" >
sufix (string)
You can add sufix to you masked value
Usage
<input type='text' sufix=" $" mask="0000" >
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
showMaskTyped (boolean)
You can choose if mask is shown while typing, or not, default value false
Usage
<input mask="(000) 000-0000" prefix="+7" [showMaskTyped] = "true">
clearIfNotMatch (boolean)
You can choose clear the input if the input value not match the mask, default value false
Pipe with mask expression and custom Pattern ([string, pattern])
You can pass array of expression and custom Pattern to pipe
Usage
<span>{{phone | mask: customMaska}}</span>
and in your component
customMaska: [string, pattern];
pattern = {
'P': {
pattern: new RegExp('\\d'),
}};
this.customMaska = ['PPP-PPP', this.pattern];
Repeat mask
You can pass into mask pattern with brackets
Usage
<input type='text' mask="A{4}">
Thousand separator
You can devide your input by thousands
Usage
<input type='text' mask="separator">
For separate input with dots
<input type='text' mask="dot_separator">
For using decimals enter '.' to the end of your input to 'separator' mask and ',' to 'dot_separator'
Input value: 1234.56
Masked value: 1 234.56
Input value: 1234,56
Masked value: 1.234,56
Time validation
You can validate your input as 24 hour format
Usage
<input type='text' mask="Hh:m0:s0">
Percent validation
You can validate your input for percents
Usage
<input type='text' mask="percents" sufix="%">
Examples
Check the demo.