diff --git a/core/modules/views/lib/Drupal/views/Tests/UI/ArgumentUITest.php b/core/modules/views/lib/Drupal/views/Tests/UI/ArgumentUITest.php
new file mode 100644
index 0000000..3d6f542
--- /dev/null
+++ b/core/modules/views/lib/Drupal/views/Tests/UI/ArgumentUITest.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\views\Tests\UI\ArgumentUITest.
+ */
+
+namespace Drupal\views\Tests\UI;
+
+/**
+ * Tests the UI of argument plugins.
+ */
+class ArgumentUITest extends UITestBase {
+
+  /**
+   * Views used by this test.
+   *
+   * @var array
+   */
+  public static $testViews = array('test_argument_ui');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Argument: UI',
+      'description' => 'Tests the UI of argument plugins.',
+      'group' => 'Views UI',
+    );
+  }
+
+  /**
+   * Tests adding an argument based on a relationship.
+   */
+  public function testArgumentRelationshipUI() {
+    $view_name = 'test_argument_ui';
+    $view_edit_url = "admin/structure/views/view/$view_name/edit";
+
+    $row_plugin_url = "admin/structure/views/nojs/display/$view_name/default/row";
+    $row_options_url = "admin/structure/views/nojs/display/$view_name/default/row_options";
+
+    $this->drupalGet($view_edit_url);
+
+    $edit = array('name[users.uid]' => TRUE);
+    $this->drupalPost("admin/structure/views/nojs/add-item/$view_name/default/argument", $edit, 'Add and configure contextual filters');
+    $this->assertFieldByName('options[relationship]', 'uid', 'The author relationship is selected on the argument options form.');
+
+    $this->drupalPost(NULL, array(), 'Apply');
+    $this->drupalGet($view_edit_url);
+    $this->assertLinkByHref("admin/structure/views/nojs/config-item/$view_name/default/argument/uid");
+  }
+
+}
diff --git a/core/modules/views/tests/views_test_config/test_views/views.view.test_argument_ui.yml b/core/modules/views/tests/views_test_config/test_views/views.view.test_argument_ui.yml
new file mode 100644
index 0000000..2df2854
--- /dev/null
+++ b/core/modules/views/tests/views_test_config/test_views/views.view.test_argument_ui.yml
@@ -0,0 +1,74 @@
+api_version: '3.0'
+base_field: nid
+base_table: node
+core: 8.x
+description: ''
+disabled: '0'
+display:
+  default:
+    display_plugin: default
+    id: default
+    display_title: Master
+    position: ''
+    display_options:
+      access:
+        type: perm
+      cache:
+        type: none
+      query:
+        type: views_query
+      exposed_form:
+        type: basic
+      pager:
+        type: full
+      style:
+        type: default
+      row:
+        type: fields
+      fields:
+        title:
+          id: title
+          table: node
+          field: title
+          label: ''
+          alter:
+            alter_text: '0'
+            make_link: '0'
+            absolute: '0'
+            trim: '0'
+            word_boundary: '0'
+            ellipsis: '0'
+            strip_tags: '0'
+            html: '0'
+          hide_empty: '0'
+          empty_zero: '0'
+          link_to_node: '1'
+      filters:
+        status:
+          value: '1'
+          table: node
+          field: status
+          id: status
+          expose:
+            operator: '0'
+          group: '1'
+      sorts:
+        created:
+          id: created
+          table: node
+          field: created
+          order: DESC
+      relationships:
+        uid:
+          id: uid
+          table: node
+          field: uid
+          relationship: none
+          group_type: group
+          admin_label: ''
+          label: author
+          required: '0'
+human_name: test_argument_ui
+module: views
+name: test_argument_ui
+tag: ''
diff --git a/core/modules/views/views_ui/admin.inc b/core/modules/views/views_ui/admin.inc
index 7d40d5b..a4e42ea 100644
--- a/core/modules/views/views_ui/admin.inc
+++ b/core/modules/views/views_ui/admin.inc
@@ -1453,7 +1453,7 @@ function views_ui_config_item_form($form, &$form_state) {
       if (!empty($relationship_options)) {
         // Make sure the existing relationship is even valid. If not, force
         // it to none.
-        $base_fields = views_fetch_fields($view->get('base_table'), $form_state['type'], $executable->display_handler->useGroupBy());
+        $base_fields = views_fetch_fields($executable->storage->get('base_table'), $form_state['type'], $executable->display_handler->useGroupBy());
         if (isset($base_fields[$item['table'] . '.' . $item['field']])) {
           $relationship_options = array_merge(array('none' => t('Do not use a relationship')), $relationship_options);
         }
diff --git a/core/modules/views/views_ui/views_ui.module b/core/modules/views/views_ui/views_ui.module
index e3e9362..bcf3bd7 100644
--- a/core/modules/views/views_ui/views_ui.module
+++ b/core/modules/views/views_ui/views_ui.module
@@ -371,12 +371,22 @@ function views_ui_cache_set(ViewUI $view) {
     unset($executable->current_display);
   }
 
-  // Unset handlers; we don't want to write these into the cache
+  // Unset handlers. We don't want to write these into the cache.
+  $display_handler = $executable->display_handler;
+  $default_display = $executable->default_display;
+  $display_handlers = $executable->displayHandlers;
+
   unset($executable->display_handler);
   unset($executable->default_display);
   $executable->query = NULL;
   $executable->displayHandlers = array();
   drupal_container()->get('user.tempstore')->get('views')->set($view->get('name'), $view);
+
+  // Re-add the different variables to be able to call views_ui_cache_set
+  // without fearing data loss.
+  $executable->display_handler = $display_handler;
+  $executable->default_display = $default_display;
+  $executable->displayHandlers = $display_handlers;
 }
 
 /**
