Angular Маршруты/входная автофокусировка
Я использую маршрут angular. Каждая страница (маршрут) имеет поле ввода. Я успешно использовал атрибут автофокусировки на первой странице. Когда я перехожу к другим страницам, вход не автофокусируется. Возврат на первую страницу не автофокусирует вход снова. Теперь я понимаю, почему это не работает, но хотелось бы знать, есть ли способ сделать это.
Я новичок в angular, и я не уверен, что понимаю, что я читал о ngFocus:
https://docs.angularjs.org/api/ng/directive/ngFocus
Ответы
Ответ 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();
});
}
}));