You can't share a view to a role but as you found you can share to a team.
Teams contains CRM Users and you can assign roles to team too. But you need to pay attention to the additive privilege rule.
For example User A can only read the contacts, Team Delta can read,update and delete contacts. If you add User A inside Team Delta, User A will be able to update and delete the contacts too.
Back to your question, you can create a team containing the same users that have the role, but OOB there isn't an option to keep updated the team when you add/remove the role from a user.
You can write a plugin that will do this job for you or keep doing manually (means when a new user get the role you need to remember to add this user to the team too)