Change field label used in node display I have a custom content type in Drupal 8.6.x. I want to be able to change the text used for a field label based on the value of a taxonomy term reference in the node. 

For example, I want to change the field label used for the body field, to display "Description" or "Definition" or "Introduction", etc. based on the value in the taxonomy reference field. This is when rendering the node - I don't need to change the field label on the form. I'll need to alter the label in the full and teaser display modes, and just for the custom content type. I don't need to change any of the text in the body field, just what label is shown above it.
You can do this by implementing hook_entity_view_display_alter in a custom module.

Some code like this should work:

function HOOK_entity_view_display_alter(\Drupal\Core\Entity\Display\EntityViewDisplayInterface $display, array $context) {
  if (
    $context['entity_type'] == 'node' &amp;&amp;
    $context['bundle'] == 'CUSTOM_CONTENT_TYPE' &amp;&amp;
    (
      $context['view_mode'] == 'full' ||
      $context['view_mode'] == 'teaser'
    )
  ) {
    foreach ($display-&gt;getComponents() as $name =&gt; $options) {
      if ($name == 'text' &amp;&amp; isset($options['label'])) {
        $node = \Drupal::routeMatch()-&gt;getParameter('node');
        $options['label'] = $node-&gt;FIELD_TERMS-&gt;entity-&gt;label();
        $display-&gt;setComponent($name, $options);
      }
    }
  }
}