BeginPlay is not fired for children of Component created in runtime

What fixed my problem is calling [FONT=courier new]MyActorComponent->RegisterComponent() after creating it in UMyStaticMeshComponent constructor.



UMyStaticMeshComponent::UMyStaticMeshComponent()
{
    MyActorComponent = CreateDefaultSubobject<UMyActorComponent>(TEXT("MyActorComponent"));
    MyActorComponent->RegisterComponent(); // << This helped
}


Though I still don’t understand how come it works when building UMyStaticMeshComponent in constructor with CreateDefaultSubobject and doesn’t work when building it with NewObject<UMyStaticMeshComponent>.