Привязка хоста к анонимной лямбда-функции?

#angular #typescript

#angular #typescript

Вопрос:

Я использую @HostBinding для привязки результатов функции к видимому атрибуту элемента хоста:

 @HostBinding('attr.visible')
private get visibleAttr(): any {
  return this._visible ? '' : null;
}
  

Имя функции кажется избыточным, потому что ничто другое никогда не вызовет эту функцию. Я пытался объявить это как анонимную лямбда-функцию, но это не сработало:

 @HostBinding('attr.visible') (() => {
  return this._visible ? '' : null;
})
  

Есть ли способ объявить эту функцию анонимно или, по крайней мере, с помощью лямбда? Или фреймворк Angular зависит от того, как он назван?

Ответ №1:

@HostBinding является декоратором и нуждается в действительном элементе для оформления. Если ваш 2-й пример кода

 (() => {
  return this._visible ? '' : null;
})
  

сам по себе был допустимым членом, он мог бы работать, но это недопустимый typescript (или javascript) для объявления члена. Как таковой он не может работать.