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
measured, not assumed
unguarded, one write: 25 writes and 25 change events · with setValue(v, true): 1 write, 0 change events