import { ElementRef, Injector, Directive, HostListener } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { ValueAccessor } from '@ionic/angular/common'; @Directive({ /* tslint:disable-next-line:directive-selector */ selector: 'ion-select, ion-radio-group, ion-segment, ion-datetime', providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: SelectValueAccessorDirective, multi: true, }, ], }) export class SelectValueAccessorDirective extends ValueAccessor { constructor(injector: Injector, el: ElementRef) { super(injector, el); } @HostListener('ionChange', ['$event.target']) _handleChangeEvent( el: HTMLIonSelectElement | HTMLIonRadioGroupElement | HTMLIonSegmentElement | HTMLIonDatetimeElement ): void { this.handleValueChange(el, el.value); } }