两者都是属性装饰器。

Host Element

  从单词上来说 HostListener 与 HostBinding 前面都有 Host。

  什么是 Host ?

  Host: 主人,东道主

    可以推测 这两个单词分别 用来监听主人的一举一动,为主人新增一些属性。 

  Host Element 即 宿主元素。

  宿主元素 即可以是 普通的标签元素,也可以是 自定义的组件。

HostListener 

  为宿主元素添加事件监听。

  语法知识:

    @HostListener(eventName,args[])

    funcName(arguments) { }

  eventName :click,mousemove,moueout等事件名。

  args: 通过触发eventName事件获取的参数,通常是 $event:Event。

  其中 arguments参数个数与 args 个数应当保持一致。

  

HostBinding

  动态设置宿主元素属性值。

  语法知识:

    @HostBinding(属性值A)

    属性值A更新依据的 函数 或 变量元素

下面是是一个综合例子

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

@Directive({
selector: '[appCounting]',
// tslint:disable-next-line:use-host-property-decorator
host: {
'(mousemove)': 'selfMove($event.target)'
}
})
export class CountingDirective { constructor(private el: ElementRef, private renderer: Renderer) { } clickCounts = 0; @HostListener('document:click', ['$event.target'])
selfClick(element: any) {
if (this.el.nativeElement.contains(event.target)) {
console.log('yes');
} else {
console.log('no');
}
}
// tslint:disable-next-line:member-ordering
@HostBinding('class.isMove')
isMove: boolean; selfMove(btn: HTMLElement) {
this.isMove = true;
} @HostListener('mouseout', ['$event.type'])
selfMouseOut(event, target) {
console.log(event,target)
this.isMove = false;
}
}

  在组件中,常常会配合使用 ElementRef, Renderer , 获取当前元素,而不必使用 document.querySelector 原生 方法获取元素。

最新文章

  1. 追踪记录每笔业务操作数据改变的利器——SQLCDC
  2. 简单介绍一下python Queue中常用的方法
  3. github的使用步骤及体会
  4. windows下使用pthreads
  5. 高性能MySQL --- 读书笔记(1) - 2016/8/2
  6. Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)
  7. 常见内部函数----Python
  8. WebView实现文件下载功能
  9. 理解java的三大特性之多态(三)
  10. 给Select赋值 innerHTML 不兼容IE6\IE7\IE8\IE9
  11. linux 网络不通问题排查
  12. Eclipse 添加 lib (导入 .jar 包)
  13. css和HTML布局小技巧
  14. txt,csv,json互相转化
  15. HTML DOM学习
  16. springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法
  17. HDOJ 2001 ASCII码排序
  18. chattr 和 lsattr 命令介绍---案例:修改passwd文件
  19. NYOJ 116 士兵杀敌 (线段树,区间和)
  20. UVa 10382 Watering Grass (区间覆盖贪心问题+数学)

热门文章

  1. Android经常使用的布局类整理(一)
  2. windows和linux在建筑python集成开发环境IDE
  3. HDU 2647 Reward(图论-拓扑排序)
  4. hdu 统计难题(map)
  5. [转载]Arguments
  6. java_前端_autocomplete_搜索框自动匹配提示
  7. centos5.8本地安装yum资源,安装软件包
  8. 【高德地图API】那些年我们一起开发的APP—即LBS应用模式分享
  9. CSS3 制作向左、向右及关闭图标的效果
  10. Java泛型解析(03):虚拟机运行泛型代码