Add/Remove Components on param change

I am trying to create grid of textRenderers in C++. The size of the grid is exposed to blueprints so it can be changed in details tab when you put it into the level.

Its easy to do it in blueprints because each time you move/adjust object, it re-runs the constructor.
I would like to use CreateDefaultSubobject method, which cant be used outside of constructor (like in OnConstruction or PostEditChangeProperty)

How to re-run the constructor on c++ objects with the new grid size? I just feel its basic thing and I only found complicated solutions.

virtual void OnConstruction(const FTransform& Transform) override;

Works fine with Components.

I gave the NewObject in OnConstruction another shot but it is super buggy. Looking at details panel it adds textrenderer correctly, but i need to change actors location/rotation for the text renderer to show itself. Is there some render update function I am not calling?

void ARoom_Generator::OnConstruction(const FTransform & Transform) {

	UE_LOG(LogTemp, Warning, TEXT("ON construciton"));
	UTextRenderComponent* textRenderer = NewObject<UTextRenderComponent>(this, UTextRenderComponent::StaticClass());