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 日期处理之时区问题
Oct 08 Javascript
XHTML下,JS浮动代码失效的问题
Nov 12 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
Jul 31 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
Aug 03 Javascript
jquery加载图片时以淡入方式显示的方法
Jan 14 Javascript
jquery获取checkbox的值并post提交
Jan 14 Javascript
jquery attr()设置和获取属性值实例教程
Sep 25 Javascript
JS中的JSON对象的定义和取值实现代码
May 09 Javascript
JS判断数组里是否有重复元素的方法小结
May 21 Javascript
原生js实现的观察者和订阅者模式简单示例
Apr 18 Javascript
小程序分享链接onShareAppMessage的具体用法
May 22 Javascript
JSON stringify方法原理及实例解析
Oct 23 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中获取时间的下一周下个月的方法
2014/03/18 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
自己使用总结Python程序代码片段
2015/06/02 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
学python安装的软件总结
2019/10/12 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
使用python实现飞机大战游戏
2020/03/23 Python
Python如何读取、写入JSON数据
2020/07/28 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
表扬信格式
2014/01/12 职场文书
《落花生》教学反思
2014/02/25 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
护校行动方案
2014/05/31 职场文书
企业负责人任命书
2014/06/05 职场文书
党小组考察意见
2015/06/02 职场文书
亮剑观后感
2015/06/05 职场文书
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android