HostBinding

@HostBinding 装饰器允许我们以编程方式在指令的 host 元素上设置属性值。它的工作方式与模板中定义的属性绑定类似,只是它专门针对主机元素。检查每个更改检测周期的绑定,因此可以根据需要动态更改。例如,假设我们要为按钮创建一个指令,当我们按下它时动态添加一个类。这可能看起来像:

import { Directive, HostBinding, HostListener } from '@angular/core';

@Directive({
  selector: '[appButtonPress]'
})
export class ButtonPressDirective {
  @HostBinding('attr.role') role = 'button';
  @HostBinding('class.pressed') isPressed: boolean;

  @HostListener('mousedown') hasPressed() {
    this.isPressed = true;
  }
  @HostListener('mouseup') hasReleased() {
    this.isPressed = false;
  }
}

请注意,对于 @HostBinding 的两个用例,我们传入一个字符串值,我们想要影响哪个属性。如果我们不向装饰器提供字符串,那么将使用类成员的名称。在第一个 @HostBinding 中,我们将 role 属性静态设置为 button。对于第二个示例,当 isPressed 为 true 时,将应用按下的类