Package Exports
- mat-tel-input
 - mat-tel-input/package.json
 
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