Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.01.2019, 16:56
Новичок на форуме
Отправить личное сообщение для ДашаДаша Посмотреть профиль Найти все сообщения от ДашаДаша
 
Регистрация: 27.12.2018
Сообщений: 3

Установить фокус в инпут
Почитав как делается установка фокуса в input https://coderanch.com/t/675897/langu...us-Angular-app

Решила сделать директиву
import { Directive, OnInit, Input, ElementRef, Renderer } from '@angular/core';

@Directive({
  selector: '[appSetFocus]'
})
export class SetFocusDirective implements OnInit {

  @Input('appSetFocus') isFocused: boolean;

  constructor(private hostElement: ElementRef, private renderer: Renderer) {}

  ngOnInit() {
    console.log('***SetFocusDirective***');
    if (this.isFocused) {
      this.renderer.invokeElementMethod(this.hostElement.nativeElement, 'focus');
    }
  }
}


Вот так применяю директиву в шаблоне
<input [appSetFocus]="addInput">

addInput - флаг, который делаю true, когда хочу получить фокус в инпуте

Но фокус не появляется

Меня смущает, что в директиве все происходит в функции OnInit() и в консоле вижу, что срабатывает один раз

Подскажите в чем ошибка
Ответить с цитированием
  #2 (permalink)  
Старый 23.01.2019, 07:14
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

@Directive({
  selector: '[appSetFocus]'
})
export class SetFocusDirective implements OnInit {

  @Input('appSetFocus') set isFocused(value: boolean) {
    if (value) {
      this.renderer.invokeElementMethod(this.hostElement.nativeElement, 'focus');
    }
  }

  constructor(private hostElement: ElementRef, private renderer: Renderer) {}

  ngOnInit() {
    console.log('***SetFocusDirective***');
  }
}
Ответить с цитированием
  #3 (permalink)  
Старый 23.01.2019, 10:24
Новичок на форуме
Отправить личное сообщение для ДашаДаша Посмотреть профиль Найти все сообщения от ДашаДаша
 
Регистрация: 27.12.2018
Сообщений: 3

Спасибо, destus, работает!
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
получить фокус в инпут sashgera Элементы интерфейса 3 23.10.2014 02:00
Как перевести фокус на следующий элемент? Shitbox2 jQuery 3 03.11.2012 15:57
Как вернуть фокус в окно редактирования? Roman Koff Общие вопросы Javascript 1 02.08.2010 12:35
Как убрать выделение в Опере у div, получившего фокус ? spa_2002 Opera, Safari и др. 5 03.09.2009 10:42
В окне confirm установить фокус на кнопке "Отмена". Natali Элементы интерфейса 2 01.09.2009 10:50