One signal makes it a form field.

Then it answers your own writes.

THE WHOLE CONTRACT
class TagPicker implements
    FormValueControl<string[]> {
  value = model<string[]>([]);
}
NO LONGER YOURS TO WRITE
writeValue
registerOnChange
registerOnTouched
setDisabledState
setValue(v)
change
the widget cannot tell
your write from a user's
TOM SELECT 2.6.2
Billing Infrastructure |
Onboarding
Security
Billing · already selected
silent suppresses change only
item_add  item_remove  clear fire anyway
measured, not assumed unguarded, one write: 25 writes and 25 change events  ·  with setValue(v, true): 1 write, 0 change events
Angular 22.1.7 · Tom Select 2.6.2 · counts from npm test in the demo
gdhami.net