У меня есть директива angular2/4, которую я сделал, которую я прикрепляю к входным элементам DOM, которая добавляет к ним класс, отмечая, что они не пусты.
@Directive({
selector: '[inputNotEmptyAddClass]'
})
export class InputNotEmptyDirective implements OnInit {
...
@HostListener('change') onChange() {
this.process();
}
...
process() {
[Add class to parent input element, when it has a value]
}
Все работало нормально, пока я не добавил модуль выбора даты (https://github.com/kekeh/mydatepicker а>) на шоу. Этот модуль создает новый компонент, в котором один из дочерних элементов является входом, и все это позволяет мне выбрать дату.
Чего я пытаюсь достичь здесь:
Я хочу переписать свою директиву, чтобы прослушивать либо обратные вызовы средства выбора даты, либо подписаться (я использую RXjS) на некоторые переменные средства выбора даты. Тем не менее, у меня нет идей о том, как правильно это реализовать.
Что я пробовал?
Я обнаружил, что с помощью ControlValueAccessor
constructor( @Inject(NG_VALUE_ACCESSOR) private _valueAccessor: ControlValueAccessor )
Я могу проверить и посмотреть, является ли элемент, к которому подключена моя директива, средством выбора даты.
if ( this._valueAccessor[0].constructor.name == 'MyDatePicker' ) {
Теперь я вижу, что у него есть функции onChange и все переменные, но я понятия не имею, как на них подписаться.
Я также мог бы использовать функции обратного вызова модулей в своей директиве, но они, похоже, не срабатывают. Есть ли способ заставить их срабатывать?
onDateChanged(event: IMyDateModel) {
// event properties are: event.date, event.jsdate, event.formatted and event.epoc
}
Нижняя линия.
Я открыт для любых подсказок или решений о том, как подключить директиву к переменным и обратным вызовам родительских элементов. Я понимаю, что это довольно общий вопрос, но, может быть, кто-то может указать мне правильное направление здесь.
@HostListener('dateChanged')
? - person Vamshi   schedule 24.06.2017