It is quite simple.
Suppose you are making a custom component class for your project.
you need to get a hold of a another UObject so you add a Property. something like
UPROPERTY(EditAnywhere, ....)
TObjectPtr<SomeClass> myVariable;
if is happens that SomeClass is derived from AActor, UTextute, UStaticMesh, UMaterial, and few others. Then, when in editor or game, the detail panel gives the user browsing capability.
However if SomeClass is subclass of Actor Component, you only get a dropdown list with an empty selection.
No where is the code or documentation explain how to populate the drop down list.
this is not because the subclass of a static asset because actors aren’t.
what this mean is that if you add a pointer to a component in one of your classes,
the only way to initialized it is either by setting a default value at construction,
or by writing a blueprint script that uses a function to set it.
I can see why is this. In other to provide this functionality the compound widget most be written to support the functionality for that class. I actually wrote an asset editor and found that out.
However the standard unreal editors are inflexible.
and it appears that the designers of this editors explicitly excluded components from browsing.