Form API placeholder attribute rendered as "- Select -" In a custom Drupal 8 module, I have a couple of Form API fields of '#type' =&gt; 'select':
&lt;?
    $form['form-right']['field_role'] = [
      '#type' =&gt; 'select',
      '#title' =&gt; $this-&gt;t('Role'),
      '#title_display' =&gt; 'invisible',
      '#required' =&gt; TRUE,
      '#options' =&gt; [
        'foo' =&gt; $this-&gt;t('Role Foo'),
        'bar' =&gt; $this-&gt;t('Role Bar'),
        'baz' =&gt; $this-&gt;t('Role Baz'),
        'quux' =&gt; $this-&gt;t('Role Quux'),
        'plugh' =&gt; $this-&gt;t('Role Plugh'),
        'xyzzy' =&gt; $this-&gt;t('Role Xyzzy'),
      ],
      '#attributes' =&gt; [
        'placeholder' =&gt; $this-&gt;t('Role'),
      ],
    ];

    $form['form-right']['field_contact_reason'] = [
      '#type' =&gt; 'select',
      '#title' =&gt; $this-&gt;t('Contact Reason'),
      '#title_display' =&gt; 'invisible',
      '#required' =&gt; TRUE,
      '#options' =&gt; [
        'foo' =&gt; $this-&gt;t('Contact Reason Foo'),
        'bar' =&gt; $this-&gt;t('Contact Reason Bar'),
        'baz' =&gt; $this-&gt;t('Contact Reason Baz'),
        'other' =&gt; $this-&gt;t('Other'),
      ],
      '#attributes' =&gt; [
        'placeholder' =&gt; $this-&gt;t('Contact Reason'),
      ],
    ];

Before a value is selected, the dropdown select picklists display the string '- Select -':

The client would like them to display the value in the placeholder attribute instead.
Have I done something wrong?
According to the documentation: https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Render%21Element%21Select.php/class/Select

#empty_option: (optional) The label to show for the first default option. By default, the label is automatically set to &quot;- Select -&quot; for
a required field and &quot;- None -&quot; for an optional field.