2016-04-19 8 views

Antwort

1

Host bedeutet das DOM-Element, das diese Komponente hostet.

  • (focus)... bedeutet auf Ereignisse auf dem Bauteil selbst
  • [class.someClass]... bedeutet hinzufügen/entfernen, um eine Klasse auf das jeweilige Bauteil
  • ...
+0

ist nicht * alles * über dieses DOM-Element? Wäre also ein Name wie "Listeners" oder "Observer" nicht sinnvoller als "Host", weil es sich um Event-Listener und Handler handelt? –

+0

Ich denke, es handelt sich hierbei um eine Unterscheidung zwischen dem DOM-Element (Host) und der Klasseninstanz, die etwas anderes ist. Es gibt auch die Ansicht (Kinder des Gastgeberelements). Ich denke, es ist richtig, dies explizit zu machen. –

1

host bedeutet zu hören, dass Sie etwas konfigurieren wird gegen das Element, für das die Richtlinie gilt. In Ihrem Fall registrieren Sie Handler für die Ereignisse focus und blur des Elements.

Solche Handler werden in die Directive-Klasse definiert. Wenn zum Beispiel das Element den Fokus hat, wird die onFocus Methode aufgerufen.

@Directive ({ 
    selector: "[autoGrow]", 
    host: { 
    "(focus)": "onFocus()", 
    "(blur)": "onBlur()" 
    } 
}) 
export class MyDirective { 
    onFocus() { 
    // handle focus event 
    } 

    onBlur() { 
    // handle blur event 
    } 
} 
2

Richtlinie gebunden Element Gastgeber:

<input autoGrow> 

<input> wird in diesem Zusammenhang genannt Host.

(focus) und (blur) sind tatsächlich Ereignisse durch den Host geschickt, es ist die gleiche Zuhörer direkt an input als Zugabe:

<input (focus)="onFocus()" (blur)="onBlur()"> 
+0

Wenn wir '' verwenden können, bedeutet das, dass der 'host:' Teil tatsächlich mehr sein kann als nur die Events und Handler? –

+0

Ja, Sie können Eingabe/Ausgabe-Namen, Stile, Bindungen definieren, aber die Dokumentation ist wirklich schlecht. – kemsky

Verwandte Themen