diff --git a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php
index 14ca3d3..9042e46 100644
--- a/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php
+++ b/core/modules/entity/lib/Drupal/entity/EntityDisplayBase.php
@@ -194,9 +194,7 @@ public function getComponent($name) {
       // visibility.
       if (isset($this->content[$name])) {
         if ($this->content[$name]['visible']) {
-          return array(
-            'weight' => $this->content[$name]['weight'],
-          );
+          return $this->content[$name];
         }
         else {
           return NULL;
@@ -207,9 +205,7 @@ public function getComponent($name) {
       // visibility in its definition.
       $definition = $extra_fields[$name];
       if (!isset($definition['visible']) || $definition['visible'] == TRUE) {
-        return array(
-          'weight' => $definition['weight']
-        );
+        return $definition;
       }
       else {
         return NULL;
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php
index 0d68e77..3c5acec 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverview.php
@@ -71,13 +71,19 @@ protected function buildFieldRow($field_id, FieldInstanceInterface $instance, En
    */
   protected function buildExtraFieldRow($field_id, $extra_field, $entity_display) {
     $extra_field_row = parent::buildExtraFieldRow($field_id, $extra_field, $entity_display);
+    $display_options = $entity_display->getComponent($field_id);
 
-    // Insert an empty placeholder for the label column.
+    // Insert the label column.
     $label = array(
-      'empty_cell' => array(
-        '#markup' => '&nbsp;'
-      )
+      'label' => array(
+        '#type' => 'select',
+        '#title' => $this->t('Label display for @title', array('@title' => $extra_field['label'])),
+        '#title_display' => 'invisible',
+        '#options' => $this->getFieldLabelOptions(),
+        '#default_value' => $display_options ? $display_options['label'] : 'above',
+      ),
     );
+
     $label_position = array_search('plugin', array_keys($extra_field_row));
     $extra_field_row = array_slice($extra_field_row, 0, $label_position, TRUE) + $label + array_slice($extra_field_row, $label_position, count($extra_field_row) - 1, TRUE);
 
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php
index fcc764c..60a4849 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php
@@ -499,9 +499,7 @@ public function submitForm(array &$form, array &$form_state) {
         $display->removeComponent($name);
       }
       else {
-        $display->setComponent($name, array(
-          'weight' => $form_values['fields'][$name]['weight'],
-        ));
+        $display->setComponent($name, $form_values['fields'][$name]);
       }
     }
 
