Получите текущий фокус динамически с функцией angular.element

0

Я пытаюсь получить текущий фокус ввода динамически с помощью углового и машинописного текста. Я использую функцию 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;
}

Это отлично работает для меня :)

Теги:
element
focus

1 ответ

1

Пытаться

angular.element('input').triggerHandler('focus');

или если он не работает

angular.element('input').triggerHandler('click');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню