diff --git a/core/modules/edit/lib/Drupal/edit/MetadataGenerator.php b/core/modules/edit/lib/Drupal/edit/MetadataGenerator.php
index bdbdf10..e63c36d 100644
--- a/core/modules/edit/lib/Drupal/edit/MetadataGenerator.php
+++ b/core/modules/edit/lib/Drupal/edit/MetadataGenerator.php
@@ -58,10 +58,15 @@ public function generate(EntityInterface $entity, FieldInstance $instance, $lang
     }
 
     $label = $instance['label'];
-    $formatter_id = $instance->getFormatter($view_mode)->getPluginId();
+    $formatter = entity_get_render_display($entity, $view_mode)->getFormatter($instance['field_name']);
+    // Early return if the field is not displayed in this view mode.
+    if (!$formatter) {
+      return array('access' => FALSE);
+    }
+
     $items = $entity->get($field_name);
     $items = $items[$langcode];
-    $editor = $this->editorSelector->getEditor($formatter_id, $instance, $items);
+    $editor = $this->editorSelector->getEditor($formatter->getPluginId(), $instance, $items);
     $metadata = array(
       'label' => $label,
       'access' => TRUE,
