Definir o foco na primeira entrada inválida no formulário AngularJs

Eu li vários artigos e perguntas StackOverflow relativas à configuração de foco em AngularJs.

Infelizmente, todos os exemplos que li dizem que há algum atributo que posso adicionar ao elemento para obter foco, por exemplo, umadiretiva focusMe.

No entanto, e se eu não souber de antemão qual entrada para definir o foco? Em particular, como defino o foco para o primeiro elemento de entrada em um formulário que tenha um conjunto inválido de $ - ou seja, um elemento que falha na validação. Pode haver várias entradas que falham na validação, portanto, não posso usar uma diretiva que apenas tente chamar .focus () com base nisso. (Eu estou fazendo isso por razões Acessibilidade / WCAG, é uma boa prática para fazê-lo em submeter ser clicado para minimizar pressionamentos de tecla para encontrar o primeiro campo que falhou na validação).

O objeto $ error fornecerá todos os controles que falharam na validação, mas eles são agrupados pelo tipo de falha que não está em ordem de aparição no formulário.

Tenho certeza de que posso pensar em alguma forma improvisada de fazer isso. Uma diretiva no formulário, que recebe alguma transmissão quando o foco precisa ser definido - essa diretiva pode então procurar o primeiro elemento $ invalid. No entanto, isso parece muito complexo e eu gostaria de saber se essa é uma maneira melhor e mais "angular" de fazer isso.