Accessing property of object created via NewObject() in editor causing crash

I have a hexagonal grid, created by blueprint construction script from c++ functions. There is two-dimensional TArray, where im storing all of my generated NewObject()'s. When blueprint placed in-map it generates grid - TArray of NxM objects with given StaticMesh and coordinates. Im using NewObject(), cause i want to access created components directly in-editor, by hand. Like if i need to change visibility of some grid cell i will just choose this cell in editor (not the whole blueprint) and change its Visibility property to false.
The issue is when im trying to change any property of generated objects in editor - the editor crashes, pointing that object “is still externally referenced when being destroyed”. I suggest the external reference - it’s the placement of object in TArray, but i cant understand how it can cause this behaviour.

There is the function of grid generation, hope it’ll help understanding whats wrong:

void AHexGrid_test::UpdateGrid()
{
	for (UStaticMeshComponent* SubMesh : StaticMeshes) {
		if (SubMesh) {
			SubMesh->DestroyComponent();
		}
	}
	
	StaticMeshes.Empty();
	StaticMeshes.SetNum(X * Y);
	HexCellSize = GlobalStaticMesh->GetBounds().GetBox().GetSize().X;
	
	UE_LOG(LogTemp, Log, TEXT("Updating grid with X: %d, Y: %d"), X, Y);
	
	for (int32 y = 0; y < Y; ++y) {
		for (int32 x = 0; x < X; ++x) {
			
			FString MeshName = FString::Printf(TEXT("HexCell_y%d_x%d"), y, x);
			UStaticMeshComponent* StaticMesh = NewObject<UStaticMeshComponent>(this,
				UStaticMeshComponent::StaticClass(), *MeshName, RF_Transactional);
			UE_LOG(LogTemp, Log, TEXT("Current component at X%d Y%d"), x, y);
			StaticMesh->SetVisibility(true);
			StaticMesh->SetHiddenInGame(false);
			StaticMesh->SetupAttachment(RootComponent);
			StaticMesh->RegisterComponent();

			
			if (x % 2 != 0) {
				StaticMesh->SetRelativeLocation(FVector(x*HexCellSize*0.75f*Offset,
														y*HexCellSize*0.87f*Offset + HexCellSize*0.535f, 0.0f));
			} else {
				StaticMesh->SetRelativeLocation(FVector(x*HexCellSize*0.75f*Offset,
														y*HexCellSize*0.87f*Offset, 0.0f));
			}
			if (x == 2 and y == 2)
				StaticMesh->SetVisibility(false);
			
			StaticMeshes[y*X + x] = StaticMesh;
		}	
	}
}


As u can see there is a statement which changes property of generating SubMesh - and its working fine, so on this level i can change the properties of an object. But i need to do it by hand in editor, not using functions or code at all.
Any help is greatly apreciated!

I also noticed that i can use CreateDefaultSubobject() and it’s not causing crash, but its not the solution, cause its only called in class constructor, and i cant regenerate grid while in editor with this logic. Can someone please explain what directly differ this 2 types of creating objects?