Angular 内置结构型指令

一、内置结构型指令

结构型指令的职责是HTML布局。它们构造或重塑DOM的结构,这通常是通过添加、移除和操作它们锁附加的宿主元素来实现。

常用结构型指令:

1. NgIf----根据条件把一个元素添加到DOM中或从DOM中移除

2.NgFor---对列表中的每条数据重复套用一个模板

3.NgSwitch----一组指令,用于切换一组视图。


二、NgIf

当 NgIf为false时,Angular从DOM中物理地移除了当前元素。它销毁了子树中的组件及其状态,也潜在释放了可观的资源,最终让用户体验到更好的性能。

注:ngIf前面的星号(*) 必须要有

  <button class="btn btn-primary" *ngIf="IsShow">
    提交按钮
  </button>

1.NgIf 添加或移除元素,这和显示/隐藏不是一回事。

  <div class="alert alert-info" [class.hidden]="IsShow">
    class.hidden属性---IsShow
  </div>
  <div class="alert alert-info" [class.hidden]="!IsShow">
    class.hidden属性---!IsShow
  </div>

  <span class="label label-danger" [style.display]="IsShow?'block':'none'">
    IsShow
  </span>
  <span class="label label-warning" [style.display]="!IsShow?'block':'none'">
    !IsShow
  </span>
2.防范空指针错误。

ngIf绑定上下文属性为空时,不抛出异常,当做false处理。


三. NgFor

NgFor 是一个重复器指令---自定义数据显示的一种方式。我们的目标是展示一个由多个条目组成的列表。首先定义两个一个HTML块,它规定了单个条目应该如何显示。

在告诉Angular把这个块当做模板,渲染列表中的每个条目.

  <p>ngFor指令前面要加*号</p>
  <ul class="list-group">
    <li class="list-group-item" *ngFor="let hero of heroes">
      {{hero.name}}
      <span class="label label-success">{{hero.age}}</span>
    </li>
  </ul>
1.模板输入变量

我们可以在ngFor的宿主元素(及其子元素)中引用模板输入变量hero,从而访问该英雄的属性。 这里它首先在一个插值表达式中被引用到,然后通过一个绑定把它传给了<hero-detail>组件的hero属性。

<div *ngFor="let hero of heroes">{{hero.name}}</div>
<hero-detail *ngFor="let hero of heroes" [hero]="hero"></hero-detail>
2.带索引的*ngForm

NgFor指令上下文中的index属性返回一个从零开始的索引,表示当前条目在迭代中的顺序。 我们可以通过模板输入变量捕获这个index值,并把它用在模板中。

  <p>带索引的*ngFor</p>
  <ul class="list-group">
      <li class="list-group-item" *ngFor="let hero of heroes;let i=index;">
          <span class="label label-warning">{{i}}</span>
        {{hero.name}}
      </li>
    </ul>


四、NgSwitch指令

NgSwitch指令类似于JavaScript的switch语句。 它可以从多个可能的元素中根据switch条件来显示某一个。 Angular只会把选中的元素放进DOM中。

NgSwitch实际上包括三个相互协作的指令:NgSwitchNgSwitchCase 和 NgSwitchDefault,例子如下:

<div [ngSwitch]="currentHero.emotion">
  <happy-hero    *ngSwitchCase="'happy'"    [hero]="currentHero"></happy-hero>
  <sad-hero      *ngSwitchCase="'sad'"      [hero]="currentHero"></sad-hero>
  <confused-hero *ngSwitchCase="'confused'" [hero]="currentHero"></confused-hero>
  <unknown-hero  *ngSwitchDefault           [hero]="currentHero"></unknown-hero>
</div>

更多:

Angular模板引用变量(#var)

Angular管道操作符(|)

Angular 安全导航操作符(?.)和空属性路径

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值