Establecer el foco en la primera entrada no válida en forma AngularJs

He leído varios artículos y preguntas de StackOverflow relacionadas con la configuración del enfoque en AngularJs.

Desafortunadamente, todos los ejemplos que he leído asumen que hay algún atributo que puedo agregar al elemento para ganar enfoque, por ejemplo. unadirectiva focusMe.

Sin embargo, ¿qué sucede si no sé de antemano a qué entrada debo enfocar? En particular, ¿cómo establezco el foco en el primer elemento de entrada en un formulario que tiene $ conjunto inválido? Es decir, un elemento que falla la validación. Puede haber varias entradas que fallan en la validación, por lo que no puedo usar una directiva que solo intente llamar a .focus () basándose en esto. (Estoy haciendo esto por razones de accesibilidad / WCAG, es una buena práctica hacerlo al hacer clic en el botón para minimizar las pulsaciones de teclas para encontrar el primer campo que ha fallado la validación).

El objeto $ error dará todos los controles que fallan en la validación, pero se agrupan por el tipo de falla y no en ningún orden de aparición en el formulario.

Estoy seguro de que puedo encontrar alguna forma de hacer esto. Una directiva en el formulario, que recibe cierta difusión cuando es necesario establecer el enfoque: esa directiva puede buscar el primer elemento $ inválido. Sin embargo, esto parece muy complejo y me gustaría saber si esta es una mejor forma más "angular" de hacer esto.

Respuestas a la pregunta(12)

Su respuesta a la pregunta