Подтвердить что ты не робот

Angular Маршруты/входная автофокусировка

Я использую маршрут angular. Каждая страница (маршрут) имеет поле ввода. Я успешно использовал атрибут автофокусировки на первой странице. Когда я перехожу к другим страницам, вход не автофокусируется. Возврат на первую страницу не автофокусирует вход снова. Теперь я понимаю, почему это не работает, но хотелось бы знать, есть ли способ сделать это.

Я новичок в angular, и я не уверен, что понимаю, что я читал о ngFocus:

https://docs.angularjs.org/api/ng/directive/ngFocus

4b9b3361

Ответ 1

ngFocus - это не то, что вы ищете. Эта директива является скорее триггером события. Он будет выполнять ваш код всякий раз, когда пользователь дает фокус в текстовое поле.

Что вы хотите, это что-то вроде этой настраиваемой директивы:

angular
    .module('myApp')
    .directive('autofocus', function($timeout) {
        return {
            link: function(scope, element, attrs) {
                $timeout(function() {
                    element.focus();
                });
            }
        }
    });

Вдохновленный http://ericclemmons.com/angular/angular-autofocus-directive/

Ответ 2

В моем случае ответ Трэвиса Коллинза не работал, потому что каким-то образом элемент был массивом входов.

Поэтому я должен использовать слегка измененную версию. Обратите внимание, что функции стрелок.

.directive('autofocus', ($timeout) => ({
    link: (scope, element: any, attrs) => {
        if (!element.focus && element.length) {
            element = element[0];
        }
        $timeout(() => {
            element.focus();
        });
    }
}));