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 相关文章推荐
javascript操作cookie_获取与修改代码
May 21 Javascript
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
js实现单行文本向上滚动效果实例代码
Nov 28 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
Mar 26 Javascript
JS简单生成两个数字之间随机数的方法
Aug 03 Javascript
详解javascript中对数据格式化的思考
Jan 23 Javascript
vue中mint-ui的使用方法
Apr 04 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 Javascript
JavaScript中.min.js和.js文件的区别讲解
Feb 13 Javascript
详解Vue 如何监听Array的变化
Jun 06 Javascript
使用JavaScript实现贪吃蛇游戏
Sep 29 Javascript
Vue-router中hash模式与history模式的区别详解
Dec 15 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
js模仿hover的具体实现代码
2013/12/30 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
python实现整数的二进制循环移位
2019/03/08 Python
python利用platform模块获取系统信息
2020/10/09 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
贷款承诺书范文
2014/05/19 职场文书
党员服务承诺书
2014/05/28 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
先进党员事迹材料
2014/12/24 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书