Angular如何自定义attribute指令

简介: Angular如何自定义attribute指令

需求:

实现一个自定义的attribute directive,当施加到某个html element时,鼠标hover上去,会修改其背景颜色。


Highlight me!


下面是具体做法。


(1) 使用命令行创建directive:


ng generate directive highlight


自动生成的文件:

image.png

import { Directive } from '@angular/core';
@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective {
  constructor() { }
}

中括号语法标注了这是一个attribute指令。Angular在处理模板里的html元素时,如果发现某个元素具有appHighlight属性,就会将该指令的行为施加给该元素。


这里的selector之所以不取名为highlight,是为了避免和html标准的属性冲突。同样,不使用ng作为前缀,为了避免和Angular预置的attribute指令冲突。使用app代表这是应用开发人员自定义的attribute指令。


指令的具体实现放在highlight.directive.ts里:


image.png

image.png

It created an instance of the HighlightDirective class and injected a reference to the


element into the directive’s constructor which sets the


element’s background style to yellow.


在运行时,Angular找到模板里标注了appHighlight指令的element后,创建一个HighlightDirective class的实例,将这个element注入到directive实例的构造函数里。


相关文章
|
1月前
|
JavaScript 前端开发 编译器
Angular 中的结构指令运行时的工作原理
Angular 中的结构指令运行时的工作原理
Angular HTTP 请求自定义 timeout 值的一种实现思路
Angular HTTP 请求自定义 timeout 值的一种实现思路
|
10月前
|
JavaScript 定位技术
Angular1.x入门级自定义组件(导航条)
Angular1.x入门级自定义组件(导航条)
|
JavaScript 前端开发 API
让Angular自定义组件支持form表单验证
让Angular自定义组件支持form表单验证
127 0
|
前端开发 JavaScript
对于Angular表达式以及重要指令的研究心得【前端实战Angular框架】
对于Angular表达式以及重要指令的研究心得【前端实战Angular框架】
对于Angular表达式以及重要指令的研究心得【前端实战Angular框架】
angular32-其他指令ng-checked
angular32-其他指令ng-checked
60 0
angular32-其他指令ng-checked
angular21-关于指令标准属性
angular21-关于指令标准属性
65 0
angular21-关于指令标准属性