Angular @HostBinding()和@HostListener()用法


Posted in Javascript onMarch 05, 2018

@HostBinding()和@HostListener()在自定义指令时非常有用。@HostBinding()可以为指令的宿主元素添加类、样式、属性等,而@HostListener()可以监听宿主元素上的事件。

@HostBinding()和@HostListener()不仅仅用在自定义指令,只是在自定义指令中用的较多

本文基于Angular2+

下面我们通过实现一个在输入时实时改变字体和边框颜色的指令,学习@HostBinding()和@HostListener()的用法。

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

@Directive({
 selector: '[appRainbow]'①
})
export class RainbowDirective{
 possibleColors = [
  'darksalmon', 'hotpink', 'lightskyblue', 'goldenrod', 'peachpuff',
  'mediumspringgreen', 'cornflowerblue', 'blanchedalmond', 'lightslategrey'
 ];②
 @HostBinding('style.color') color: string;
 @HostBinding('style.borderColor') borderColor: string;③
 @HostListener('keydown') onKeydown(){④
  const colorPick = Math.floor(Math.random() * this.possibleColors.length);
  this.color = this.borderColor = this.possibleColors[colorPick];
 }
}

说一下上面代码的主要部分:

①:为我们的指令取名为appRainbow
 ②:定义我们需要展示的所有可能的颜色
③:定义并用@HostBinding()装饰color和borderColor,用于设置样式
④:用@HostListener()监听宿主元素的keydown事件,为color和borderColor随机分配颜色

OK,现在就来使用我们的指令:

<input appRainbow>

效果就像这样:

Angular @HostBinding()和@HostListener()用法

NOTE:别忘了把指令引入你的模块

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
犀利的js 函数集合
Jun 11 Javascript
style、 currentStyle、 runtimeStyle区别分析
Aug 01 Javascript
js中根据字数截取字符串,不能截断url
Jan 12 Javascript
input输入框的自动匹配(原生代码)
Mar 19 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
Javascript堆排序算法详解
Dec 03 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
May 06 Javascript
浅谈Javascript线程及定时机制
Jul 02 Javascript
jQuery Ztree行政地区树状展示(点击加载)
Nov 09 Javascript
vue-iview动态新增和删除的方法
Jun 17 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
Oct 22 Javascript
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
详解vue项目打包后通过百度的BAE发布到网上的流程
Mar 05 #Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 #Javascript
axios全局请求参数设置,请求及返回拦截器的方法
Mar 05 #Javascript
axios拦截设置和错误处理方法
Mar 05 #Javascript
完美解决axios在ie下的兼容性问题
Mar 05 #Javascript
vue.js 使用axios实现下载功能的示例
Mar 05 #Javascript
Vue 中使用vue2-highcharts实现top功能的示例
Mar 05 #Javascript
You might like
php生成zip压缩文件的方法详解
2013/06/09 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
PHP多维数组元素操作类的方法
2016/11/14 PHP
PHP xpath()函数讲解
2019/02/11 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
jQuery $.each的用法说明
2010/03/22 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
Python中的random()方法的使用介绍
2015/05/15 Python
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python数据结构之图的应用示例
2018/05/11 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
python的常见矩阵运算(小结)
2019/08/07 Python
如何给Python代码进行加密
2020/01/10 Python
执行Python程序时模块报错问题
2020/03/26 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
python3 kubernetes api的使用示例
2021/01/12 Python
数组越界问题
2015/10/21 面试题
光电信息专业应届生求职信
2013/10/07 职场文书
市场安全管理制度
2014/01/26 职场文书
物理教学随笔感言
2014/02/22 职场文书
安全主题班会教案
2015/08/12 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书