diff --git a/core/modules/views/src/Plugin/views/display/Feed.php b/core/modules/views/src/Plugin/views/display/Feed.php
index bd59091..b8ea8dc 100644
--- a/core/modules/views/src/Plugin/views/display/Feed.php
+++ b/core/modules/views/src/Plugin/views/display/Feed.php
@@ -5,6 +5,7 @@
 use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Cache\CacheableResponse;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\views\Plugin\views\style\AttachableStyleInterface;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Views;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
@@ -289,9 +290,11 @@ public function attachTo(ViewExecutable $clone, $display_id, array &$build) {
     $clone->setDisplay($this->display['id']);
     $clone->buildTitle();
     if ($plugin = $clone->display_handler->getPlugin('style')) {
-      $plugin->attachTo($build, $display_id, $clone->getUrl(), $clone->getTitle());
-      foreach ($clone->feedIcons as $feed_icon) {
-        $this->view->feedIcons[] = $feed_icon;
+      if ($plugin instanceof AttachableStyleInterface) {
+        $plugin->attachTo($build, $display_id, $clone->getUrl(), $clone->getTitle());
+        foreach ($clone->feedIcons as $feed_icon) {
+          $this->view->feedIcons[] = $feed_icon;
+        }
       }
     }
 
diff --git a/core/modules/views/src/Plugin/views/style/AttachableStyleInterface.php b/core/modules/views/src/Plugin/views/style/AttachableStyleInterface.php
new file mode 100644
index 0000000..38358e0
--- /dev/null
+++ b/core/modules/views/src/Plugin/views/style/AttachableStyleInterface.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Drupal\views\Plugin\views\style;
+
+use Drupal\Core\Url;
+
+/**
+ * Defines a View style that can be attached to another display.
+ */
+interface AttachableStyleInterface {
+
+  /**
+   * This style is being attached to the given display.
+   *
+   * @param array $build
+   *   The build render array.
+   * @param $display_id
+   *   The display ID that this style is being attached to.
+   * @param \Drupal\Core\Url $url
+   *   The URL of this style display.
+   * @param $title
+   *   This display's title.
+   */
+  public function attachTo(array &$build, $display_id, Url $url, $title);
+
+}
diff --git a/core/modules/views/src/Plugin/views/style/Opml.php b/core/modules/views/src/Plugin/views/style/Opml.php
index ed02511..d1eeb3e 100644
--- a/core/modules/views/src/Plugin/views/style/Opml.php
+++ b/core/modules/views/src/Plugin/views/style/Opml.php
@@ -3,6 +3,7 @@
 namespace Drupal\views\Plugin\views\style;
 
 use Drupal\Core\Url;
+use Drupal\views\Plugin\views\style\AttachableStyleInterface;
 
 /**
  * Default style plugin to render an OPML feed.
@@ -17,7 +18,7 @@
  *   display_types = {"feed"}
  * )
  */
-class Opml extends StylePluginBase {
+class Opml extends StylePluginBase implements AttachableStyleInterface {
 
   /**
    * Does the style plugin for itself support to add fields to its output.
diff --git a/core/modules/views/src/Plugin/views/style/Rss.php b/core/modules/views/src/Plugin/views/style/Rss.php
index e612453..f773d21 100644
--- a/core/modules/views/src/Plugin/views/style/Rss.php
+++ b/core/modules/views/src/Plugin/views/style/Rss.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Url;
+use Drupal\views\Plugin\views\style\AttachableStyleInterface;
 
 /**
  * Default style plugin to render an RSS feed.
@@ -18,7 +19,7 @@
  *   display_types = {"feed"}
  * )
  */
-class Rss extends StylePluginBase {
+class Rss extends StylePluginBase implements AttachableStyleInterface {
 
   /**
    * Does the style plugin for itself support to add fields to it's output.
@@ -27,6 +28,9 @@ class Rss extends StylePluginBase {
    */
   protected $usesRowPlugin = TRUE;
 
+  /**
+   * {@inheritdoc}
+   */
   public function attachTo(array &$build, $display_id, Url $feed_url, $title) {
     $url_options = array();
     $input = $this->view->getExposedInput();
