在Angular2指令中,为什么观察者称为主机?

时间:2016-04-19 13:15:29

标签: angular

在Angular2指令装饰器中:

@Directive ({
    selector: "[autoGrow]",
    host: {
        "(focus)": "onFocus()",
        "(blur)": "onBlur()"
    } 
})

host是观察者,关于什么事件,以及哪个处理程序。在这种情况下,“主人”意味着什么?

3 个答案:

答案 0 :(得分:2)

指令绑定到主机元素:

<input autoGrow>
在这种情况下,

<input>被称为主持人。

(focus)(blur)实际上是由主持人调度的事件,与将侦听器直接添加到input相同:

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

答案 1 :(得分:1)

Host表示承载此组件的DOM元素。

  • (focus)...表示侦听组件本身的事件
  • [class.someClass]...表示在组件本身上添加/删除类
  • ...

答案 2 :(得分:1)

host表示您将针对该指令适用的元素进行配置。

在这种情况下,您可以为元素的focusblur事件注册处理程序。

这些处理程序将被定义到指令类中。例如,当元素具有焦点时,将调用onFocus方法。

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

  onBlur() {
    // handle blur event
  }
}