Я прочитал несколько статей и вопросов о StackOverflow, касающихся установки фокуса в AngularJs.
К сожалению, все примеры, которые я считал, предполагают, что существует некоторый атрибут, который я могу добавить к элементу для получения фокуса, например, focusMe директивы.
Однако, что, если я не знаю заранее, который вводит для установки фокуса на? В особенности, как я устанавливаю фокус на первый входной элемент в форме, которой установили $invalid - т.е. элемент, который приводит проверку к сбою. Могло быть несколько исходных данных, которые приводят проверку к сбою, таким образом, я не могу использовать директиву, которая просто пытается назвать .focus () на основе этого. (Я делаю это по причинам Accessibility/WCAG, его хорошая практика, чтобы сделать так на отправляют быть нажатым для уменьшения нажатий клавиш для нахождения первого поля, которое привело проверку к сбою).
Объект $error даст все средства управления, которые приводят проверку к сбою, но они сгруппированы типом отказа не в любом порядке появления на форме.
Я уверен, что могу придумать некоторый kludged способ сделать это. Директива по форме, которая получает некоторую широковещательную передачу, когда фокус должен быть установлен - что директива может затем искать первый элемент $invalid. Однако это кажется очень сложным, и я хотел бы знать, являются ли они лучшим больше 'углового' способа сделать это.
Незначительная тонкая настройка с тем, какой сказанный @Sajan работал на меня,
angular.element("[name='" + this.formName.$name + "']").find('.ng-invalid:visible:first')[0].focus();