Angular 指令是一种允许你在模板中扩展和修改 DOM 行为的机制。Angular 提供了两种主要类型的指令:结构型指令(Structural Directives)和属性型指令(Attribute Directives)。

结构型指令

结构型指令通过添加、移除或替换 DOM 元素的方式来改变 DOM 的结构。Angular 提供了三个内置的结构型指令:*ngIf、*ngFor 和 *ngSwitch。

1. *ngIf

*ngIf 用于根据条件添加或移除 DOM 元素。
<div *ngIf="isVisible">This is visible</div>

2. *ngFor

*ngFor 用于循环遍历集合,并为每个元素生成相应的 DOM 元素。
<ul>
  <li *ngFor="let item of items">{{ item }}</li>
</ul>

3. *ngSwitch

*ngSwitch 用于基于表达式的值切换多个元素之间的显示。
<div [ngSwitch]="condition">
  <div *ngSwitchCase="'case1'">Case 1 content</div>
  <div *ngSwitchCase="'case2'">Case 2 content</div>
  <div *ngSwitchDefault>Default content</div>
</div>

属性型指令

属性型指令通过修改或添加 DOM 元素的属性来改变元素的外观或行为。Angular 提供了一些内置的属性型指令,比如 ngModel、ngClass、ngStyle。

1. ngModel

ngModel 用于在表单元素上实现双向数据绑定。
<input [(ngModel)]="name" />

2. ngClass

ngClass 用于根据条件动态添加或移除 CSS 类。
<div [ngClass]="{'active': isActive, 'disabled': isDisabled}">Some content</div>

3. ngStyle

ngStyle 用于根据条件动态设置元素的内联样式。
<div [ngStyle]="{'font-size.px': fontSize, 'color': fontColor}">Styled content</div>

自定义指令

除了内置的指令外,Angular 还允许开发者创建自定义指令。自定义指令可以用来满足特定应用程序的需求,比如添加特定的行为或样式。
// 自定义指令
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';

@Directive({
  selector: '[appCustomDirective]'
})
export class CustomDirective {
  @Input() appCustomDirective: string;

  constructor(private el: ElementRef, private renderer: Renderer2) {}

  ngOnInit() {
    this.renderer.setStyle(this.el.nativeElement, 'color', this.appCustomDirective);
  }
}
<!-- 使用自定义指令 -->
<div appCustomDirective="blue">Custom Directive Example</div>

以上是一些关于 Angular 指令的基本概念。指令是 Angular 中一个强大的特性,可以用来扩展模板的功能,实现更灵活和可复用的代码。


转载请注明出处:http://www.pingtaimeng.com/article/detail/4929/Angular