IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Angular 指令的用法 -> 正文阅读

[JavaScript知识库]Angular 指令的用法

一、定义

Angular 应用程序模板中的标签添加额外行为的类。

二、分类

内置指令

  • 属性型指令: NgClassNgStyleNgModel
  • 结构型指令: NgIfNgForNgSwitch

自定义指令

自定义属性型指令

创建及使用

1.在directives文件目录创建highlight指令

ng g d directives/highlight

创建的highlight.directive.ts文件如下

import { Directive } from '@angular/core';

@Directive({
  selector: '[appHighlight]'			// 注意这里需要中括号[]
})
export class HighlightDirective {

  constructor() { }

}

2.从 @angular/core导入ElementRefElementRefnativeElement属性会提供对宿主 DOM 元素的直接访问权限
3.在指令的 constructor() 中添加ElementRef 以注入对宿主DOM 元素的引用,该元素就是 appHighlight 的作用目标
4.从 @angular/core导入OnInit并实现其生命周期函数,在ngOnInit添加逻辑。

import { Directive, ElementRef, OnInit } from '@angular/core';

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective implements OnInit {

  constructor(private el: ElementRef) { }

  ngOnInit() {
    this.el.nativeElement.style.color = 'red';
  }

}

5.指令的使用
appHighlight标记的元素的文本将显示为红色

<!-- 此处的指令appHighlight由创建指令时的selector相匹配 -->
<div appHighlight>指令的使用说明</div>
传递参数
import { Directive, ElementRef, OnInit, Input } from '@angular/core';

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective implements OnInit {
  @Input() appHighlight: string = '';

  constructor(private el: ElementRef) { }

  ngOnInit() {
    this.el.nativeElement.style.color = this.appHighlight;
  }

}
<div appHighlight="blue">指令的使用说明</div>
处理事件
import { Directive, ElementRef, OnInit, Input, HostListener } from '@angular/core';

@Directive({
  selector: '[appHighlight]'
})
export class HighlightDirective implements OnInit {
  @Input() appHighlight: string = '';

  @HostListener('mouseover') onMouseOver() {
    this.setColor(this.appHighlight);
  }

  @HostListener('mouseout') onMouseOut() {
    this.setColor('');
  }

  constructor(private el: ElementRef) { }

  ngOnInit() {
    this.el.nativeElement.style.color = this.appHighlight;
  }

  setColor(color: string) {
    this.el.nativeElement.style.color = color;
  }

}
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 08:59:40  更:2021-08-29 09:01:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:51:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码