Often there are cases that software need custom/not standard form components like typeahead or custom date picker etc. To create custom form component you need to implement CustomFormElement interface which has two properties:
onElementValueChange - Observable that should sent ElementValueChangeEvent when component value changes
onStateValueChange - Observable that is notified when state value is changed