неправильно пользуетесь
оно строку принимает
а мой инпут не строка? не понял
@HostBinding(Вот тут строка) тутПеременная
Что вы сделать хотите напишите
я не то скинул вот в этом случае та же ошибка: ``` @Directive({ selector: '[appDropdown]' }) export class DropdownDirective { @Input() appDropDown = { className: '', eventType: '' }; @HostBinding(this.appDropDown.className) isOpen = false; @HostListener(this.appDropDown.eventType) onDropDownClick() { this.isOpen = !this.isOpen } } ```
я хочу на HostListener подставлять то что пришло с @Input
Что это вообще значит? HostListener - вешает прослушиватель событий на хост, либо на некий селектор.
зачем? Если вам нужно выбирать из нескольких, слушайте все и потом уже фильтруйте в зависимости от инпута
здесь же тип строкой является https://v14.angular.io/api/core/HostBinding#hostpropertyname
давайте начнем с того, что такое HostBinding и HostListener. Это декораторы, которые можно повесить на поле класса. Делаеют они 2 вещи. Биндинг связывает свойства хоста (классы, стили и.т.п) с переменной. Листенер вешает листенер, и вызывает декорированный метод. То что у вас в коде написано - полная бессмыслица. Я думаю вам стоит почитать по этой теме пару статей.
почему бессмыслица? <p [appMyDirective]="{ className: 'class.fingered', eventType: 'mouseenter' }"></p> я хочу вот это сделать
Как бы вам сказать. А css и hover вас чем не устраивает, например
Начнём с того, что у вас строка, а вы у неё ищете свойства как у объекта. Второе. Декораторы это компайл тайм штуки, а вы в них пытаетесь засунуть значения переменной, поэтому и бессмыслица
я понял что это абсурдная штука просто хочется попробовать написать такое
Ваш инпут не существует в данном контексте
this - не строка Вы пытаетесь к экземпляру обратиться
вы все перепутали. Я не пытаюсь) я пытаюсь человеку объяснить как надо
input - строка. Но в декоратор передаёте не строку, а переменную
там товарищ хочет очень странного чего-то
так он хочет как аргумент декоратора использовать поле инпут строки. Мдэ
Ну не то что странное, просто хочет кастомизировать перехватываемый ивент, но так нельзя
кажется, что можно, но не так)
очень странное - декоратор так не может
можно на смену инпута руками листенер вешать. иначе никак особо
На ум приходит только fromEvent на elementRef
Обсуждают сегодня