в Angular2 как узнать, когда ЛЮБОЕ поле ввода ввода потеряло фокус

В Angular2 как узнать, когда ЛЮБОЕ поле ввода потеряло фокус ..! Если я использую наблюдаемые в форме:

form.valueChange.subscribe... 

не работает, так как я действительно хочу знать, когда поле потеряло размытие (фокус), поэтому я могу обновить свой магазин (если я обновляю хранилище до потери фокуса, мой курсор на текстовом вводе будет перенесен в конец, поскольку данные будут заменены что странно выглядит)

конечно, я могу добавить (change)="" на каждый вход, но у меня много …

Я думал о чем-то вроде:

 this.form.valueChanges.debounceTime(1000).subscribe((changes:any) => { if (this.form.dirty){ this.appStore.dispatch(this.resellerAction.updateResellerInfo(changes)) } }); 

но проблема в том, что грязный остается грязным, поэтому он застрял в вечной петле заметок об изменениях …

Техас

Шон

Событие blur не пузырится, поэтому нам нужно прослушивать каждый входной элемент напрямую. Угловое обеспечивает хорошее решение для этой ситуации.

Директива, которая применяется ко всем входным элементам внутри вашего шаблона.

Эта директива использует хост-прослушиватель для прослушивания событий blur во всех элементах, где применяется селектор, и пересылает событие пузырящегося input-blur :

 @Directive({ selector: 'input,select', host: {'(blur)': 'onBlur($event)'} }) class BlurForwarder { constructor(private elRef:ElementRef, private renderer:Renderer) {} onBlur($event) { this.renderer.invokeElementMethod(this.elRef.nativeElement, 'dispatchEvent', [new CustomEvent('input-blur', { bubbles: true })]); // or just // el.dispatchEvent(new CustomEvent('input-blur', { bubbles: true })); // if you don't care about webworker compatibility } } 

Добавив директиву BlurForwarder к directives: [...] она будет применяться ко всем элементам в своем шаблоне, которые соответствуют селектору.
Хост-слушатель прослушивает пузырьки событий input-blur и вызывает наш обработчик событий:

 @Component({ selector: 'my-component', directives: [BlurForwarder], host: {'(input-blur)':'onInputBlur($event)'}, template: ` 
` }) { onInputBlur(event) { doSomething(); } }

Почему бы не использовать фокусацию по умолчанию в DOM

  • Как я действительно развертываю приложение Angular 2 + Typcript + systemjs?
  • Угловое - использование труб в услугах и компонентах
  • Нельзя привязываться к 'ng-forOf', поскольку это не известное свойство
  • Угловая 2: маршрутизация без изменения URL-адреса
  • Итерация над объектом в Угловом
  • Настройка переменных динамической области в AngularJs - область.
  • Как применять фильтры к * ngFor?
  • Циркулярная зависимость впрыска угловая 2
  • Angular2 - как вызвать функцию компонента извне приложения
  • Угловой 2 «Компонент-имя» кармы не является известным элементом
  • Как связать Угловое приложение для производства
  • Interesting Posts

    Установите для Windows 8 режим ввода для каждого приложения

    Как я могу перечислить все процессы с повышенными разрешениями в Windows 7 или выше?

    Может ли ПК Windows что-либо делать во время сна?

    Учетная запись администратора в Windows Vista

    Может ли виртуальная виртуальная машина работать на другом оборудовании?

    Как подключить 2 виртуальные машины (VMWare Workstation 7.0) в отдельной сети?

    Настройки шрифта Emacs не работают в новом кадре

    Как увеличить размер буфера xterm по умолчанию

    целочисленный размер в c зависит от того, что?

    Firestore: как выполнить запрос с неравенством / не равен

    Как сделать полное внешнее соединение в Linq?

    Почему Macbook Pro может замерзать при возобновлении сна?

    Как передать значение с одной jsp на другую страницу jsp?

    Аппарат Windows 7 автоматически запускается при подключении к источнику питания

    Отключить Linux для чтения и записи кэша файлов в разделе

    Давайте будем гением компьютера.