Szukaj…


@HostBinding

Dekorator @HostBinding pozwala nam programowo ustawić wartość właściwości elementu hosta dyrektywy. Działa podobnie do wiązania właściwości zdefiniowanego w szablonie, z tym wyjątkiem, że konkretnie jest ukierunkowane na element hosta. Wiązanie jest sprawdzane dla każdego cyklu wykrywania zmian, dzięki czemu może zmieniać się dynamicznie w razie potrzeby. Załóżmy na przykład, że chcemy utworzyć dyrektywę dla przycisków, która dynamicznie dodaje klasę po naciśnięciu na nią. Może to wyglądać mniej więcej tak:

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;
  }
}

Zauważ, że dla obu przypadków użycia @HostBinding przekazujemy wartość ciągu, na którą właściwość chcemy wpływać. Jeśli nie podamy dekoratora ciągu, wówczas zostanie użyta nazwa członka klasy. W pierwszym @HostBinding statycznie przypisujemy atrybut roli do przycisku. W drugim przykładzie klasa wciśnięta zostanie zastosowana, gdy parametr isPressed ma wartość true



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow