Я пытаюсь получить текущий фокус ввода динамически с помощью углового и машинописного текста. Я использую функцию angular.element([selector]). Focus (handler), но она не срабатывает, когда я нажимаю на вход.
Это мой код:
class TemplateController {
lastFocused: HTMLInputElement;
static $inject = ['$scope'];
constructor(private $scope: ng.IScope) {
angular.element("input[type='text']").focus((): void => {
this.lastFocused = document.activeElement as HTMLInputElement;
console.log("FOCUSED");
});
}
}
angular
.module("app")
.controller("[...]templateController", TemplateController);
}
И это мой html (вводный фрагмент):
...
<input class="form-control" type="text" id="title" name="title" size="30" ng-maxlength="1000" required />
...
Что я делаю неправильно?
Заранее спасибо :)
EDIT: разрешено
Я смог решить эту проблему, используя атрибут ng-focus для элемента ввода:
<input class="form-control" type="text" id="title" name="title" size="30" ng-maxlength="1000" required ng-focus="templateCtrl.setFocusedElement()" />
и внутри контроллера:
setFocusedElement(): void {
this.$scope.lastFocused = document.activeElement;
}
Это отлично работает для меня :)
Пытаться
angular.element('input').triggerHandler('focus');
или если он не работает
angular.element('input').triggerHandler('click');