CDO’s for blueprints don’t come with the blueprint-created components. Instead, they can be queried from the blueprint class’ Simple Construction Script.
//We need a `UBlueprintGeneratedClass` for this to work
//One way to get it is via the blueprint actor's class:
auto* BPGC = Cast<UBlueprintGeneratedClass>(MyActor->GetClass());
//Alternatively, if we have a `UBlueprint`, such as when working with assets...
auto* BPGC = Cast<UBlueprintGeneratedClass>(Blueprint->GeneratedClass);
//Once we have the BP generated class, we can do the following:
auto Nodes = BPGC->SimpleConstructionScript->GetAllNodes();
//This gives us an array where each component is a node, and we can get
//the actual component like so:
UActorComponent* Comp = Nodes[0]->GetActualComponentTemplate(BPGC);
It’s worth noting that the components you get from this will not necessarily be fully initialized, like they would be if they were spawned as part of an actor. However, they should mostly reflect the values set into them in the blueprint editor.
Physics related things in particular might not be queryable from these components.
Alternative approaches
A function exists as AActor::ForEachActorDefaultComponent
which can be used to iterate all components from an actor’s CDO, which works on blueprint classes as well. It uses the method mentioned above to get the BP components in addition to any C++ components.