Skip to content

Getting started

@telixon/angular has two parts. TelixonPhoneInput is a directive for an <input>. The user sees a formatted number while the form control holds it in E.164. TelixonRegionPicker is a component that adds the flag and a searchable list of regions next to the input. Both are built on @telixon/web-sdk.

The major version follows Angular’s. @telixon/angular 20 runs on Angular 20. The fields render on the server and hydrate. The end-to-end suite runs on Chromium, Firefox, and WebKit against a prerendered page.

Terminal window
ng add @telixon/angular

ng add installs the package, adds the flags stylesheet to the application’s styles, and registers provideTelixon with the engine preload.

The package depends on @telixon/core and @telixon/web-sdk and re-exports both. One import covers every widget, function, and type.

A phone field and a region picker, linked through [for]:

contact.ts
import { Component } from '@angular/core';
import { FormControl, ReactiveFormsModule } from '@angular/forms';
import { TelixonPhoneInput, TelixonRegionPicker } from '@telixon/angular';
@Component({
selector: 'app-contact',
imports: [ReactiveFormsModule, TelixonPhoneInput, TelixonRegionPicker],
template: `
<telixon-region-picker [for]="phone" [prioritize]="['US', 'CA', 'GB']" />
<input
type="tel"
autocomplete="tel"
#phone="telixonPhoneInput"
[telixonPhoneInput]="{ mode: 'international', defaultRegion: 'US', display: { callingCodeInInput: false } }"
[formControl]="control"
[placeholder]="phone.state()?.placeholder ?? ''"
/>
`,
})
export class Contact {
readonly control = new FormControl<string | null>(null);
}

The same field runs on StackBlitz, on its own or inside Angular Material.

At first the picker shows the United States flag and the field shows the placeholder 201-555-0123. After typing 4155550132 the field shows 415-555-0132 while the control holds +14155550132. For a partial number the control holds null and reports the fault:

control.value; // null
control.errors; // { telixonPhone: { kind: 'TOO_SHORT', minLength: 10 } }