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 相关文章推荐
picChange 图片切换特效的函数代码
May 06 Javascript
JavaScript经典效果集锦
Jul 06 Javascript
JQuery调用WebServices的方法和4个实例
May 06 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
详细讲解JavaScript中的this绑定
Oct 10 Javascript
JavaScript实现图片瀑布流和底部刷新
Jan 02 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
Jul 02 Javascript
详解vantUI框架在vue项目中的应用踩坑
Dec 06 Javascript
React 使用Hooks简化受控组件的状态绑定
Mar 18 Javascript
node+vue实现文件上传功能
May 28 Javascript
JavaScript浅层克隆与深度克隆示例详解
Sep 01 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
PHP与javascript的两种交互方式
2006/10/09 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
微信支付开发交易通知实例
2016/07/12 PHP
php上传excel表格并获取数据
2017/04/27 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
XmlUtils JS操作XML工具类
2009/10/01 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
python设计模式大全
2016/06/27 Python
Python3数字求和的实例
2019/02/19 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Python单元测试与测试用例简析
2019/11/09 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
个人对照检查剖析材料
2014/10/13 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
前台接待岗位职责
2015/02/03 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
五年级作文之成长
2019/09/16 职场文书