How to allow user to select page template from front end?

You want to use get_page_templates function. See codex : https://developer.wordpress.org/reference/functions/get_page_templates/

get_page_templates(null, 'your_post_type');