resolveDisplayText

protected abstract suspend fun resolveDisplayText(value: T): String?

Works out the text of the selected value. Called once per value, outside the rendering path, and the result lands in ControlState.displayText - which is why querying the database or an API is fine here.

Returning null means "nothing to show" (e.g. the row disappeared from under the saved id); the control then shows a placeholder text.