У меня есть поле даты, и я хочу удалить заполнитель по умолчанию.
Я использую javascript onfocus
и onfocusout
события для удаления заполнителя.
Может ли кто-нибудь помочь с использованием директивы angular2?
<input name="date" type="text" onfocus="(this.type='date')" onfocusout="(this.type='text')" class="dateinput">
Я пытаюсь решить эту проблему, но у меня возникают проблемы со сбросом типа поля ввода.
import { Directive, ElementRef, Input } from 'angular2/core';
@Directive({
selector: '.dateinput',
host: {
'(focus)': 'setInputFocus()',
'(focusout)': 'setInputFocusOut()',
}})
export class MyDirective {
constructor(el: ElementRef) { this.el = el.nativeElement; console.log(this.el);}
setInputFocus(): void {
//console.log(this.elementRef.nativeElement.value);
}
}
dateinput
?onfocusout="someMethod()"
someMethod()
в этом случае будет вызываться в глобальной области видимости. Это еще одна причина, по которой использование Angular в этом случае полезно.focus
ng6focus
будет работать с поддерживаемыми входами и текстовыми полями, но если у вас есть пользовательские компоненты, которые не поддерживают это, вы можете использоватьfocusin
вместо этого :)Если вы хотите динамически отслеживать событие фокуса на каждом входе вашего компонента:
Ознакомьтесь с полным кодом здесь: https://stackblitz.com/edit/angular-93jdir
источник
Я создал небольшую директиву, связывающуюся с атрибутом tabindex. Он динамически добавляет / удаляет класс has-focus.
источник
Решение такое:
источник
у меня работает от Pardeep Jain
источник