## 什么是结构型指令?
```
结构型指令的职责是 HTML 布局。 它们塑造或重塑 DOM 的结构,比如添加、移除或维护这些元素,说白了就是对DOM元素的操作。
```
像其它指令一样,你可以把结构型指令应用到一个DOM元素上。 然后它就可以对DOM元素及其子元素做点什么。
>[danger] 在一个元素上可以使用多个属性型指令,但只能使用一个结构型指令
## 一、\*ngIf
```
<div *ngIf="isActive;else elseBlock">变量true时显示</div>
<ng-template #elseBlock><div class="false">变量为false显示</div></ng-template>
```
## 二、\*ngFor
```
<li *ngFor="let item of arrayList; let key = index">
{{key}}:{{item}}
</li>
```
## 三、\[ngSwitch\]
```
<div [ngSwitch]="htmltags">
<div *ngSwitchCase="'div'">div标签</div>
<span *ngSwitchCase="'span'">span标签</span>
<p *ngSwitchCase="'p'">p标签</p>
<a *ngSwitchDefault>a标签</a>
</div>
```
## 四、ng-container
>[info] ng-container标签作为结构性指令的宿主元素不会被渲染在页面中
```
// ng-container标签不会被渲染在页面中
<ng-container *ngIf="htmltags">
<div> and saw I waved</div>
</ng-container>
```
- 目录结构
- 架构
- 指令
- 数据绑定
- 结构性指令
- 属性型指令
- 自定义指令
- 模板引用变量
- 属性绑定
- 事件绑定
- 组件
- 组件交互
- 管道
- 自定义管道
- 动态组件
- 变量检测机制
- 组件生命周期
- 路由
- 路由配置
- 路由导航
- 路由传值
- 父子路由
- 路由事件
- 顶级路由和特征路由
- 多重路由
- 路由守卫
- 路由守卫-简单理解
- 路由惰性加载
- 路由预加载
- 路由动画
- 网络请求
- GET请求
- POST请求
- JSOP请求
- 封装的http请求
- http拦截器
- 表单
- 响应式表单
- 驱动式表单
- CLI命令
- 启动应用
- 创建项目
- 创建组件
- 创建服务
- 创建路由守卫
- 创建特征模块
- 创建自定义指令
- 创建自定义管道
- 相关概念
- 急性加载
- 惰性加载
- 特征模块
- 常见问题
- 全局的Angular CLI大于本地的Angular CLI
- 包体优化