Да, это возможно, используя интерфейс ControlValueAccessor
Вот пример кода, который нужно добавить, когда вы реализуете в своем классе компонентов
const TYPE_CONTROL_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => YourComponent ),
multi: true
};
@Component({
selector: 'custom-control',
templateUrl: './custom-control.component.html',
styleUrls: ['./custom-control.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [TYPE_CONTROL_ACCESSOR]
})
export class YourComponent implements ControlValueAccessor {
private onTouch: Function;
private onModelChange: Function;
writeValue(obj: string): void {
this.value = obj;
}
registerOnChange(fn: any): void {
this.onModelChange = fn;
}
registerOnTouched(fn: any): void {
this.onTouch = fn;
}
Вы можете связать событие из вашего шаблона (HTML) и записать их в ваш component.ts