AngularJs でのフォーカスの設定に関するいくつかの記事と StackOverflow の質問を読みました。
残念ながら、私が読んだすべての例は、focusMe ディレクティブなど、要素に追加してフォーカスを得ることができる属性があることを前提としています。
ただし、フォーカスを設定する入力を事前に知らない場合はどうなりますか? 特に、$invalid が設定されているフォームの最初の入力要素、つまり検証に失敗した要素にフォーカスを設定するにはどうすればよいですか。検証に失敗する入力がいくつかある可能性があるため、これに基づいて .focus() を呼び出そうとするだけのディレクティブは使用できません。(私はアクセシビリティ/WCAG の理由でこれを行っています。検証に失敗した最初のフィールドを見つけるためにキープレスを最小限に抑えるために、送信時にクリックすることをお勧めします)。
$error オブジェクトは、検証に失敗したすべてのコントロールを提供しますが、フォームに表示される順序ではなく、失敗の種類によってグループ化されます。
私はこれを行うためのいくつかの巧妙な方法を思い付くことができると確信しています。フォーカスを設定する必要があるときに何らかのブロードキャストを受信するフォーム上のディレクティブ - そのディレクティブは、最初の $invalid 要素を検索できます。ただし、これは非常に複雑に思えます。これがより「角度のある」方法であるかどうかを知りたいです。