# 指令
指令是一个 Angular 类,这个类负责创建和重塑浏览器 DOM 中的 HTML 元素,同时负责与 HTML 元素的互动。指令是 Angular 中最基本的特性之一。
Angular 模板是动态的。当 Angular 渲染它们时,它会根据 指令 提供的操作指南对 DOM 进行修改。
Angular 指令可分为三种:组件,属性型指令,结构型指令
* 组件 其实就是一个带模板的指令。它是这三种指令中最常用的,我们会写大量的组件来构建应用程序。
* 属性型指令 会修改元素的外观或行为。比如,内建指令 ngStyle 就能同时修改元素的好几个样式。
* 结构型指令 通过添加和删除 DOM 元素来改变 DOM 的布局。有三个内建的结构型指令:ngIf ngSwitch ngFor
## 组件
组件是一个带模板的指令,而且 `@Component` 装饰器实际上就是一个 `@Directive` 装饰器,只是扩展了一些面向模板的属性。
虽然组件从技术角度看就是一个指令,但是组件非常独特,并在 Angular 中位于中心地位,所以在架构概览中,我们把组件从指令中独立了出来。
## 结构型指令
### ngIf
```html
b'>
```
### ngSwitch
```html
Var is A
Var is A again
Var is B
Var is something else
```
### ngFor
```js
*ngFor='let item of items' // The items is the collection of items from your controller
*ngFor='let item of items; let i = index' // 还可以提供索引值(从 0 开始)
```
```html