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 相关文章推荐
js获取提交的字符串的字节数
Feb 09 Javascript
javascript控制swfObject应用介绍
Nov 29 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
Mar 17 Javascript
JS分页效果示例
Oct 11 Javascript
JavaScript设计模式之工厂模式和构造器模式
Feb 11 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 Javascript
Angular4 ElementRef的应用
Feb 26 Javascript
layer.js open 隐藏滚动条的例子
Sep 05 Javascript
vue组件暴露和.js文件暴露接口操作
Aug 11 Javascript
Angular处理未可知异常错误的方法详解
Jan 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
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
jQuery内容筛选选择器实例代码
2017/02/06 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
Python字符串三种格式化输出
2020/09/17 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
你对IPv6了解程度
2016/02/09 面试题
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
活动邀请函范文
2014/01/19 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL