博客
关于我
Angular入门到精通系列教程(10)- 指令(Directive)
阅读量:450 次
发布时间: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/

    你可能感兴趣的文章
    Object.keys()的详解和用法
    查看>>
    OBJECTIVE C (XCODE) 绘图功能简介(转载)
    查看>>
    Objective-C ---JSON 解析 和 KVC
    查看>>
    Objective-C 编码规范
    查看>>
    Objective-C——判断对象等同性
    查看>>
    Objective-C之成魔之路【7-类、对象和方法】
    查看>>
    Objective-C享元模式(Flyweight)
    查看>>
    Objective-C以递归的方式实现二叉搜索树算法(附完整源码)
    查看>>
    Objective-C内存管理教程和原理剖析(三)
    查看>>
    Objective-C实现 Greedy Best First Search最佳优先搜索算法(附完整源码)
    查看>>
    Objective-C实现 jugglerSequence杂耍者序列算法 (附完整源码)
    查看>>
    Objective-C实现1000 位斐波那契数算法(附完整源码)
    查看>>
    Objective-C实现2 个数字之间的算术几何平均值算法(附完整源码)
    查看>>
    Objective-C实现2d 表面渲染 3d 点算法(附完整源码)
    查看>>
    Objective-C实现2D变换算法(附完整源码)
    查看>>
    Objective-C实现3n+1猜想(附完整源码)
    查看>>
    Objective-C实现3n+1猜想(附完整源码)
    查看>>
    Objective-C实现9x9乘法表算法(附完整源码)
    查看>>
    Objective-C实现9×9二维数组数独算法(附完整源码)
    查看>>
    Objective-C实现A*(A-Star)算法(附完整源码)
    查看>>