EditInline TSubobjectPtr does not save properties changed in editor

I am trying to make values of a TSubobjectPtr changable in the editor, which works, but whenever I restart the editor the changes have reset.

My structure is basically this:

UCLASS()
class UActionObject : public UObject
{
	GENERATED_UCLASS_BODY()

	
	UPROPERTY(EditInline, VisibleAnywhere, BlueprintReadOnly, Category = Configuration)
	TSubobjectPtr<UActionConfig> ConfigForXY;

	UPROPERTY(EditInline, VisibleAnywhere, BlueprintReadOnly, Category = Configuration)
	TSubobjectPtr<UActionConfig> ConfigForAB;
	
}

UActionObject::UActionObject(const class FPostConstructInitializeProperties& PCIP)
	: Super(PCIP)
{
	ConfigForXY = PCIP.CreateDefaultSubobject<UActionConfig>(this, "Config 1");
	ConfigForAB = PCIP.CreateDefaultSubobject<UActionConfig>(this, "Config 2");
}

and

UCLASS()
class UActionConfig : public UObject
{
	GENERATED_UCLASS_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Configuration)
	int32 numberTest;

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Configuration)
	bool bToggleTest;
}

UActionConfig::UActionConfig(const class FPostConstructInitializeProperties& PCIP)
	: Super(PCIP)
{
	numberTest = 42;
	bToggleTest = false;
}

I can save extended blueprint assets and use them in PIE correctly, but once I restart the Editor all UActionConfig values are back to false and 42.

Am I doing something wrong or is this a bug?

greetings
FTC

The subobject name you pass to PCIP.CreateDefaultSubobject needs to match the actual property name. Otherwise, it won’t recognize that the default has been overridden.

So you need to change "Config 1" to "ConfigXY", and similarly for "Config 2".

From my tests that didn’t matter whether or not the name matched the variable or not. It is true that changing the name would drop data saved prior to doing it.

However since then I switched to 4.6 and now use regular pointers and the Instanced specifier which solved the problem.