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 相关文章推荐
jqGrid jQuery 表格插件测试代码
Aug 23 Javascript
Jquery网页出现的乱码问题的三种解决方法
Jun 30 Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 Javascript
详谈javascript中DOM的基本属性
Feb 26 Javascript
JQuery中DOM加载与事件执行实例分析
Jun 13 Javascript
基于JavaScript短信验证码如何实现
Jan 24 Javascript
vue-router实现webApp切换页面动画效果代码
May 25 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
Nov 05 Javascript
vue组件从开发到发布的实现步骤
Nov 11 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
Oct 08 Javascript
Angular8 实现table表格表头固定效果
Jan 03 Javascript
使用next.js开发网址缩短服务的方法
Jun 17 Javascript
详解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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
PHP简单选择排序算法实例
2015/01/26 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
全球度假村:Club Med
2017/11/27 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
如何定义一个可复用的服务
2014/09/30 面试题
留学顾问岗位职责
2014/04/14 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
2016元旦晚会主持词
2015/07/01 职场文书