diff --git a/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php b/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php
index 2630034..8b6d10c 100644
--- a/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php
+++ b/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php
@@ -52,6 +52,15 @@ public function appliesTo() {
    */
   public function access(Route $route, Request $request) {
     list($entity_type, $bundle) = explode(':', $route->getRequirement($this->requirementsKey) . ':');
+
+    // The bundle argument can contain request arguments like {name},
+    // replace those with the raw value of that argument.
+    if ($bundle && strpos($bundle, '{') !== FALSE) {
+      foreach ($request->get('_raw_variables')->all() as $name => $value) {
+        $bundle = str_replace('{' . $name . '}', $value, $bundle);
+      }
+    }
+
     return $this->entityManager->getAccessController($entity_type)->createAccess($bundle);
   }
 
diff --git a/core/modules/taxonomy/lib/Drupal/taxonomy/Access/TaxonomyTermCreateAccess.php b/core/modules/taxonomy/lib/Drupal/taxonomy/Access/TaxonomyTermCreateAccess.php
deleted file mode 100644
index b6305e6..0000000
--- a/core/modules/taxonomy/lib/Drupal/taxonomy/Access/TaxonomyTermCreateAccess.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\taxonomy\Access\TaxonomyTermCreateAccess.
- */
-
-namespace Drupal\taxonomy\Access;
-
-use Drupal\Core\Entity\EntityCreateAccessCheck;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Route;
-
-/**
- * Provides an access check for taxonomy term creation.
- */
-class TaxonomyTermCreateAccess extends EntityCreateAccessCheck {
-
-  /**
-   * {@inheritdoc}
-   */
-  protected $requirementsKey = '_access_taxonomy_term_create';
-
-  /**
-   * {@inheritdoc}
-   */
-  public function access(Route $route, Request $request) {
-    $entity_type = $route->getRequirement($this->requirementsKey);
-    if ($vocabulary = $request->attributes->get('taxonomy_vocabulary')) {
-      return $this->entityManager->getAccessController($entity_type)->createAccess($vocabulary->id());
-    }
-    return parent::access($route, $request);
-  }
-
-}
diff --git a/core/modules/taxonomy/taxonomy.routing.yml b/core/modules/taxonomy/taxonomy.routing.yml
index 09dc6d0..b20e98d 100644
--- a/core/modules/taxonomy/taxonomy.routing.yml
+++ b/core/modules/taxonomy/taxonomy.routing.yml
@@ -10,7 +10,7 @@ taxonomy_term_add:
   defaults:
     _content: '\Drupal\taxonomy\Controller\TaxonomyController::addForm'
   requirements:
-    _access_taxonomy_term_create: 'taxonomy_term'
+    _entity_create_access: 'taxonomy_term:{taxonomy_vocabulary}'
 
 taxonomy_term_delete:
   pattern: '/taxonomy/term/{taxonomy_term}/delete'
diff --git a/core/modules/taxonomy/taxonomy.services.yml b/core/modules/taxonomy/taxonomy.services.yml
deleted file mode 100644
index 265eb5d..0000000
--- a/core/modules/taxonomy/taxonomy.services.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-services:
-  access_check.taxonomy_term.create:
-    class: Drupal\taxonomy\Access\TaxonomyTermCreateAccess
-    arguments: ['@plugin.manager.entity']
-    tags:
-      - { name: access_check }
