As you’ve found, PostInitializeComponents/BeginPlay are specifically about initializing for gameplay purposes, not for in the editor.
There’s a couple of different options depending on your needs:
PostInitProperties is called after all the components are created and initialized to their default values. Keep in mind that this is called for both created and loaded Objects, and in the case where an object is being loaded from disk (an Actor placed in the level) it will not yet have any saved values.
PostLoad can be used to do work based on the values loaded from disk and PostActorCreated is the equivalent function of PostLoad for Actors spawned dynamically.
PostRegisterAllComponents may also be a useful function, but do keep in mind that this function will be called anytime RegisterAllComponents is called which can happen for a number of different reasons, not just initial set up.