На основании this host attribute post, я создал this Plunker.Директива не применяется при использовании атрибута хозяина «attr»
После прочтения проблемы github, я понимаю, что мы должны использовать [attr.someDirective]
, чтобы условно применить атрибут директивы к элементу.
Кажется, что добавляет/удаляет атрибут директивы, как и следовало ожидать. Однако Plunker демонстрирует, что при использовании attr
- даже когда директива arribute добавляется к элементу, директива никогда не применяется.
Я пропустил что-то здесь, или это не так, как работает атрибут хоста attr
?
При дальнейших расследованиях это не работает так, как мне нужно/нужно. Я обновил plunk, чтобы включить 'phoneMask' в свой собственный, как показано в примерах.Третий вход НЕ должен иметь применяемую директиву (а атрибут не находится на элементе), но он все еще запускает функцию onInputChange в директиве. – Kizmar
Увольнение 'onInputChange' не имеет отношения с наличием/отсутствием директивы (атрибута) в элементе. 'OnInputChange' запускается, потому что вы установили' @HostListener ('ngModelChange', ['$ event']) 'в пользовательской директиве. Если вы хотите избежать эффекта события onInputChange, вы должны вернуться из 'onChangeInput', выполнив' if (! This.phoneMask) return; '. –
Вот чего я боялся. Это означает, что сторонняя директива, которую я использую, нуждается в изменении. – Kizmar