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 時,將應用按下的類