博客
关于我
Angular入门到精通系列教程(10)- 指令(Directive)
阅读量:451 次
发布时间:2019-03-06

本文共 2091 字,大约阅读时间需要 6 分钟。

指令(Directive)在 Angular 开发中的应用

环境

  • Angular CLI: 11.0.6
  • Angular: 11.0.7
  • Node: 12.18.3
  • npm: 6.14.6
  • IDE: Visual Studio Code

摘要

指令(Directive)是 Angular 开发中的核心概念之一。在 Angular 1.0 时代(当时称为 AngularJS),指令是扩展 DOM 元素的主要手段。虽然随着时间推移,组件(Component)的普及使得指令的使用频率有所下降,但对理解 Angular 的核心机制仍至关重要。


组件与指令之间的关系

通过查看 Angular 源码,可以发现 Component 接口实际上是 Directive 的子接口。这意味着,组件本身也是一个特定类型的指令。与普通的指令不同,组件不仅可以定义 HTML 模板,还能通过 @Component 装饰器进行配置。


指令的种类

  • 组件(Component):作为特殊的指令,组件可以包含 HTML 模板。
  • 属性型指令:用于修改 DOM 元素的外观和行为,而不会改变 DOM 结构。典型的 Angular 内置指令包括 ngClassngStyle
  • 结构型指令:用于修改 DOM 结构。常用的结构型指令有 *ngFor*ngIf*ngSwitch。需要注意的是,同一个 HTML 元素上不能同时使用多个结构型指令,因此可以通过嵌套空元素的方式来解决。

  • Angular 中指令的用途

    指令在 Angular 中用于增强 DOM 功能。例如,可以通过自定义指令来:

    • 实现点击防抖动功能(避免双击后服务器未响应)。
    • 高亮显示特定内容。
    • 实现其他与 DOM 相关的交互功能。

    指令举例

    4.1 指令功能

    示例:实现鼠标悬停时显示黄色背景

    Highlight me!

    指令代码( HighlightDirective )

    import { Directive, ElementRef } from '@angular/core';@Directive({ selector: '[appHighlight]' })export class HighlightDirective {  constructor(el: ElementRef) {    el.nativeElement.style.backgroundColor = 'yellow';  }  @HostListener('mouseenter') onMouseEnter() {    this.highlight('yellow');  }  @HostListener('mouseleave') onMouseLeave() {    this.highlight(null);  }  private highlight(color: string) {    this.el.nativeElement.style.backgroundColor = color;  }}

    4.2 Angular CLI 生成基本文件

    通过 Angular CLI 快速生成指令模板:

    ng generate directive MyHighlight

    生成的文件包括 HTML、CSS 和 TypeScript 文件。

    4.3 指令核心代码

    完整的指令代码示例:

    import { Directive, ElementRef } from '@angular/core';@Directive({ selector: '[appHighlight]' })export class HighlightDirective {  constructor(public el: ElementRef) {    this.el.nativeElement.style.backgroundColor = 'yellow';  }  @HostListener('mouseenter') onMouseEnter() {    this.highlight('yellow');  }  @HostListener('mouseleave') onMouseLeave() {    this.highlight(null);  }  private highlight(color: string) {    this.el.nativeElement.style.backgroundColor = color;  }}

    4.4 使用指令

    在 HTML 中使用自定义指令:

    Highlight me!


    总结

  • 指令(Directive) 用于扩展 DOM 元素或组件的功能。
  • 内置指令:如 *ngFor*ngIf*ngSwitch,用于 DOM 操作。
  • 组件(Component) 是特殊的指令,可包含 HTML 模板。
  • 通过上述内容,可以更好地理解 Angular 中指令的核心作用及其在实际开发中的应用场景。

    转载地址:http://totfz.baihongyu.com/

    你可能感兴趣的文章
    PowerDesigner使用教程:右侧工具栏显示/隐藏
    查看>>
    PowerDesigner使用教程:导出sql文件以及解决中文乱码问题
    查看>>
    PowerDesigner使用教程:时间字段设置
    查看>>
    PowerDesigner使用教程:给字段添加唯一约束
    查看>>
    QGIS中怎样设置图层样式并导出地图样式
    查看>>
    PowerDesigner使用笔记
    查看>>
    QGIS中怎样实现数据坐标系转换
    查看>>
    PowerDesigner学习--基本步骤
    查看>>
    PowerDesigner导出Report通用报表
    查看>>
    PowerDesigner教程系列(二)概念数据模型
    查看>>
    Powerdesigner显示表的comment和列的comment的方法
    查看>>
    PowerDesigner最基础的使用方法入门学习
    查看>>
    PowerDesigner版本控制器设置权限
    查看>>
    PowerDesigner生成数据模型并导出报告
    查看>>
    QGIS中导入dwg文件并使用GetWKT插件获取绘制元素WKT字符串以及QuickWKT插件实现WKT显示在图层
    查看>>
    PowerDesigner逆向工程从SqlServer数据库生成PDM(图文教程)
    查看>>
    PowerEdge T630服务器安装机器学习环境(Ubuntu18.04、Nvidia 1080Ti驱动、CUDA及CUDNN安装)
    查看>>
    PowerPC-object与elf中的符号引用
    查看>>
    QFileSystemModel
    查看>>
    Powershell DSC 5.0 - 参数,证书加密账号,以及安装顺序
    查看>>