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 相关文章推荐
jquery获取table中的某行全部td的内容方法
Mar 08 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
jQuery浏览器CSS3特写兼容实例
Jan 19 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
Sep 05 Javascript
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 jQuery
使用js实现单链解决前端队列问题的方法
Feb 03 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 Javascript
关于小程序优化的一些建议(小结)
Dec 10 Javascript
js实现弹幕墙效果
Dec 10 Javascript
VUE解决跨域问题Access to XMLHttpRequest at
May 06 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
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
php session劫持和防范的方法
2013/11/12 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
php计算税后工资的方法
2015/07/28 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
JS获取URL中的参数数据
2013/12/05 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
python网络爬虫采集联想词示例
2014/02/11 Python
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
基于Python检测动态物体颜色过程解析
2019/12/04 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
python Timer 类使用介绍
2020/12/28 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
linux面试题参考答案(10)
2016/10/26 面试题
公务员保密承诺书
2014/03/27 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
安全生产宣传标语
2014/06/06 职场文书
服务理念标语
2014/06/18 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
iPhone13再次曝光
2021/04/15 数码科技
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python