diff --git a/core/modules/jsonapi/src/ResourceType/ResourceTypeBuildEvent.php b/core/modules/jsonapi/src/ResourceType/ResourceTypeBuildEvent.php
index fdc34cd5538f40f2ddd526c2fdfa7d842556e808..9090a706af7830e0e8124af2ca2b2bedb4a05902 100644
--- a/core/modules/jsonapi/src/ResourceType/ResourceTypeBuildEvent.php
+++ b/core/modules/jsonapi/src/ResourceType/ResourceTypeBuildEvent.php
@@ -151,4 +151,19 @@ public function disableField(ResourceTypeField $field) {
     }
   }
 
+  /**
+   * Enables the given field on the resource type to be built.
+   *
+   * @param \Drupal\jsonapi\ResourceType\ResourceTypeField $field
+   *   The field for which to set a public name.
+   */
+  public function enableField(ResourceTypeField $field): void {
+    foreach ($this->fields as $index => $value) {
+      if ($field === $value) {
+        $this->fields[$index] = $value->enabled();
+        return;
+      }
+    }
+  }
+
 }
diff --git a/core/modules/jsonapi/src/ResourceType/ResourceTypeField.php b/core/modules/jsonapi/src/ResourceType/ResourceTypeField.php
index c6a1922f8e85b5c4c857e5dc9277a6a5996b77c8..6f8d2ec8c8c9bbbe8e59cfd9fb60f72368854cd9 100644
--- a/core/modules/jsonapi/src/ResourceType/ResourceTypeField.php
+++ b/core/modules/jsonapi/src/ResourceType/ResourceTypeField.php
@@ -105,6 +105,16 @@ public function disabled() {
     return new static($this->internalName, $this->publicName, FALSE, $this->hasOne);
   }
 
+  /**
+   * Gets a new instance of the field that is enabled.
+   *
+   * @return static
+   *   A new instance of the field that is enabled.
+   */
+  public function enabled(): static {
+    return new static($this->internalName, $this->publicName, TRUE, $this->hasOne);
+  }
+
   /**
    * Whether the field is enabled.
    *
diff --git a/core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/jsonapi_test_resource_type_building.services.yml b/core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/jsonapi_test_resource_type_building.services.yml
index 101af96e5d67eaf4b30a4748e4bd85cc31d6f404..7f14c3c07f71993f6a8d0a59c7cdae6392e53e63 100644
--- a/core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/jsonapi_test_resource_type_building.services.yml
+++ b/core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/jsonapi_test_resource_type_building.services.yml
@@ -3,3 +3,9 @@ services:
     autoconfigure: true
   jsonapi_test_resource_type_building.build_subscriber:
     class: Drupal\jsonapi_test_resource_type_building\EventSubscriber\ResourceTypeBuildEventSubscriber
+    tags:
+      - { name: event_subscriber, priority: 1000  }
+  jsonapi_test_resource_type_building.late_build_subscriber:
+    class: Drupal\jsonapi_test_resource_type_building\EventSubscriber\LateResourceTypeBuildEventSubscriber
+    tags:
+      - { name: event_subscriber, priority: 999 }
diff --git a/core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/src/EventSubscriber/LateResourceTypeBuildEventSubscriber.php b/core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/src/EventSubscriber/LateResourceTypeBuildEventSubscriber.php
new file mode 100644
index 0000000000000000000000000000000000000000..72094cfc282ff9e3ebdd364737b156ce4c97e877
--- /dev/null
+++ b/core/modules/jsonapi/tests/modules/jsonapi_test_resource_type_building/src/EventSubscriber/LateResourceTypeBuildEventSubscriber.php
@@ -0,0 +1,47 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Drupal\jsonapi_test_resource_type_building\EventSubscriber;
+
+use Drupal\jsonapi\ResourceType\ResourceTypeBuildEvents;
+use Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * Event subscriber which tests enabling disabled resource type fields.
+ *
+ * @internal
+ */
+class LateResourceTypeBuildEventSubscriber implements EventSubscriberInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents(): array {
+    return [
+      ResourceTypeBuildEvents::BUILD => [
+        ['enableResourceTypeFields'],
+      ],
+    ];
+  }
+
+  /**
+   * Disables any resource type fields that have been aliased by a test.
+   *
+   * @param \Drupal\jsonapi\ResourceType\ResourceTypeBuildEvent $event
+   *   The build event.
+   */
+  public function enableResourceTypeFields(ResourceTypeBuildEvent $event): void {
+    $aliases = \Drupal::state()->get('jsonapi_test_resource_type_builder.enabled_resource_type_fields', []);
+    $resource_type_name = $event->getResourceTypeName();
+    if (in_array($resource_type_name, array_keys($aliases), TRUE)) {
+      foreach ($event->getFields() as $field) {
+        if (isset($aliases[$resource_type_name][$field->getInternalName()]) && $aliases[$resource_type_name][$field->getInternalName()] === TRUE) {
+          $event->enableField($field);
+        }
+      }
+    }
+  }
+
+}
diff --git a/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php b/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php
index 499de8f421561c50f282f480a310fbd87a9d533b..59667701f5b0b2bb89d12bc01f455e4c960d7941 100644
--- a/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php
+++ b/core/modules/jsonapi/tests/src/Kernel/ResourceType/ResourceTypeRepositoryTest.php
@@ -213,6 +213,40 @@ public function testResourceTypeFieldDisabling(): void {
     $this->assertTrue($this->resourceTypeRepository->getByTypeName('node--page')->isFieldEnabled('uid'));
   }
 
+  /**
+   * Tests that resource type fields can be re-enabled per resource type.
+   */
+  public function testResourceTypeFieldEnabling(): void {
+    $this->assertTrue($this->resourceTypeRepository->getByTypeName('node--article')->isFieldEnabled('uid'));
+    $this->assertTrue($this->resourceTypeRepository->getByTypeName('node--page')->isFieldEnabled('uid'));
+    $disabled_resource_type_fields = [
+      'node--article' => [
+        'uid' => TRUE,
+      ],
+      'node--page' => [
+        'uid' => TRUE,
+      ],
+    ];
+    \Drupal::state()->set('jsonapi_test_resource_type_builder.disabled_resource_type_fields', $disabled_resource_type_fields);
+    Cache::invalidateTags(['jsonapi_resource_types']);
+    $this->assertFalse($this->resourceTypeRepository->getByTypeName('node--article')->isFieldEnabled('uid'));
+    $this->assertFalse($this->resourceTypeRepository->getByTypeName('node--page')->isFieldEnabled('uid'));
+
+    $enabled_resource_type_fields = [
+      'node--article' => [
+        'uid' => TRUE,
+      ],
+      'node--page' => [
+        'uid' => TRUE,
+      ],
+    ];
+    \Drupal::state()->set('jsonapi_test_resource_type_builder.enabled_resource_type_fields', $enabled_resource_type_fields);
+    Cache::invalidateTags(['jsonapi_resource_types']);
+    $this->assertTrue($this->resourceTypeRepository->getByTypeName('node--article')->isFieldEnabled('uid'));
+    $this->assertTrue($this->resourceTypeRepository->getByTypeName('node--page')->isFieldEnabled('uid'));
+
+  }
+
   /**
    * Tests that resource types can be renamed.
    */