Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mat-tel-input) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
International Telephone Input for Angular Material (mat-tel-input)
An Angular Material package for entering and validating international telephone numbers. It adds a flag dropdown to any input, detects the user's country, displays a relevant placeholder and provides formatting/validation methods.
Caution
This is a fork from the ngx-mat-intl-tel-input library whish does not seems to be maintained anymore. Last commit is over a year
Supports:
- Angular v19
- Angular Material v19
- ReactiveFormsModule
- FormsModule
- Validation with libphonenumber-js
Installation
Install This Library
$ npm i mat-tel-input@latest
Install Dependencies Optional
$ npm i libphonenumber-js@latest
Usage
Import
Add MatTelInput to your component file:
imports: [MatTelInput];Example
Refer to main app in this repository for working example.
<mat-form-field [floatLabel]="'always'">
<mat-label>Phone</mat-label>
<mat-tel-input [preferredCountries]="['us', 'tz']" [enablePlaceholder]="true" [enableSearch]="true" name="phone" describedBy="phoneInput" formControlName="phone" />
</mat-form-field>
<mat-form-field [floatLabel]="'always'">
<mat-label>Phone</mat-label>
<mat-tel-input
[preferredCountries]="['us', 'gb']"
[enablePlaceholder]="true"
[enableSearch]="true"
name="phone"
autocomplete="tel"
(countryChanged)="yourComponentMethodToTreatyCountryChangedEvent($event)" // $event is a instance of current select Country
formControlName="phone"
/>
</mat-form-field>
If you want to show the sample number for the country selected or errors , use mat-hint anf mat-error as
<mat-form-field [floatLabel]="'always'">
<mat-label>Phone</mat-label>
<mat-tel-input [preferredCountries]="['us', 'tz']" [enablePlaceholder]="true" [enableSearch]="true" name="phone" describedBy="phoneInput" formControlName="phone" />
<mat-hint>e.g. {{phone.selectedCountry.placeHolder}}</mat-hint>
<mat-error *ngIf="f.form.controls['phone']?.errors?.required">Required Field</mat-error>
<mat-error *ngIf="f.form.controls['phone']?.errors?.validatePhoneNumber">Invalid Number</mat-error>
</mat-form-field>Inputs
| Options | Type | Default | Description |
|---|---|---|---|
| enablePlaceholder | boolean |
false |
Input placeholder text, which adapts to the country selected. |
| enableSearch | boolean |
false |
Whether to display a search bar to help filter down the list of countries |
| format | string |
default |
Format of "as you type" input. Possible values: national, international, default |
| placeholder | string |
undefined |
Placeholder for the input component. |
| maxLength | number |
15 |
max length of the input. |
| onlyCountries | string[] |
[] |
List of manually selected country abbreviations, which will appear in the dropdown. |
| preferredCountries | string[] |
[] |
List of country abbreviations, which will appear at the top. |
| resetOnChange | boolean |
false |
Reset input on country change |
| searchPlaceholder | string |
Search ... |
Placeholder for the search input |
Outputs
| Options | Type | Default | Description |
|---|---|---|---|
| countryChanged | EventEmitter<Country> |
undefined |
On country change |
Css variable
| Name | Default | Explanation |
|---|---|---|
--mat-tel-input-opacity |
1 |
If you wish both, the country flag and the placeholder to be shown by default |
--mat-tel-input-selector-opacity |
1 |
If you wish the country flag to be shown by default |
--mat-tel-input-placeholder-opacity |
1 |
If you wish the placeholder flag to be shown by default |
--mat-tel-input-flag-display |
inline-block |
If you wish to hide the country flag |
Validator
In case you had to manually remove the validator, the library exported it so you could add it back again.
| Name | Description | Example |
|---|---|---|
matTelInputValidator |
The actual phone validator used for the control | phoneControl.addValidators([matTelInputValidator]) |
Library Contributions
- Fork repo.
- Go to
./libs/mat-tel-input - Update
./src/libwith new functionality. - Update README.md
- Pull request.
Helpful commands
- Copy license and readme files:
$ npm run copy-files - Publish package:
$ npm run publish
Authors and acknowledgment
- maintainer Munir I Said
- Forked from ngx-mat-intl-tel-input