For our customs, we often use deticated virtual fields with standard editors that we hide if they are not needed by the record flow.
If you try to change an editor of a field in run time to something else, then you will get an empty selector.
You can change i.e. ITEM to ITEM(W[yourcustomselection]) but you cannot change ITEM το CUSTOMER on the fly.
For small tables like categories, groups, manufacturers, models, or usertables I use STRINGS in an object, assign the editor to that string, and change the string list from javascript based on user clicks.
Thus you have one editor that can show different values based on the user input, but is the classic single selector for memory tables.