How do I retain user input in a form after submission?
Try adding $form_state-&gt;setRebuild(TRUE); to your submitForm().  Quoting from here:


  Normally, after the entire form processing is completed and submit handlers have run, a form is considered to be done and \Drupal\Core\Form\FormSubmitterInterface::redirectForm() will redirect the user to a new page using a GET request (so a browser refresh does not re-submit the form). However, if 'rebuild' has been set to TRUE, then a new copy of the form is immediately built and sent to the browser, instead of a redirect.


I think that as you have stubbed a submit handler, but not implemented anything (and so are presumably not calling parent::submitForm either), it is not considered "done", so it is not redirecting; but it is not rebuilding based on the new $form_state either, because you haven't told it to.  So you end up just seeing the original form.  

As well as setting rebuild to true you may also need to $form_state-&gt;disableRedirect(TRUE) to get the desired behaviour of staying on the form, but with inputted values showing.