博客
关于我
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 内置指令包括 ngClass 和 ngStyle。
  • 结构型指令:用于修改 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/

    你可能感兴趣的文章
    python filter过滤器的使用_python基础知识分享:zip()、filter函数和reduce如何使用?...
    查看>>
    python flask 请求code 400, message Bad request version
    查看>>
    Python UI自动化测试集成UnitTest
    查看>>
    Python UTC 日期时间对象的 ISO 格式不包括 Z(祖鲁语或零偏移)
    查看>>
    python valueerror object2_python遇到错误记录
    查看>>
    python vars的作用
    查看>>
    Python virtualenv
    查看>>
    python vue3实现大文件分段续传(断点续传)--带暂停和继续功能
    查看>>
    Python WebDriver如何打印整个页面源(html)
    查看>>
    Python WebSocket自动化测试:构建高效接口测试框架
    查看>>
    Python Web开发
    查看>>
    Redis 配置文件杂项。
    查看>>
    Python web自动化测试 —— 文件上传
    查看>>
    python win32api键盘_Python win32api.keybd_event模拟键盘输入
    查看>>
    python Workbook 表格宽度
    查看>>
    python 中 dict 的另一种用法
    查看>>
    Python 中只有一个 True 和一个 False 对象吗?
    查看>>
    Python 中多线程与多处理之间的区别
    查看>>
    Python 从入门到精通:30天速成教程到底有多狠?你能坚持下来吗?
    查看>>
    Python 从数据库中存储和检索密码的最安全方法
    查看>>