Angular 双向绑定&星号(*)前缀

双向绑定 [(…)]

双向绑定为你的应用程序提供了一种在组件类及其模板之间共享数据的方式。
双向绑定语法实际上是属性绑定和事件绑定的语法糖。

双向绑定会做两件事:

  • 设置特定的元素属性。
  • 监听元素的变更事件。

Angular 为此提供了一种特殊的双向数据绑定语法 [()]。

[()] 语法将属性绑定的括号 [] 与事件绑定的括号 () 组合在一起。
[()] 语法:该元素具有名为 x 的可设置属性和名为 xChange 的相应事件。

星号是一个用来简化更复杂语法的“语法糖”

这里的 *ngIf 会在 hero 存在时显示英雄的名字。

<div *ngIf="hero" class="name">{{hero.name}}</div>

你可能注意到了指令名的星号(*)前缀,并且困惑于为什么需要它以及它是做什么的。
从内部实现来说,Angular 把 *ngIf 属性 翻译成一个 元素 并用它来包裹宿主元素,代码如下:

<ng-template [ngIf]="hero">
  <div class="name">{{hero.name}}</div>
</ng-template>

*ngIf 指令被移到了 ng-template 元素上。在那里它变成了一个属性绑定 [ngIf]。div标签 上的其余部分,包括它的 class 属性在内,移到了内部的 ng-template 元素上。

第一种形态永远不会真的渲染出来。 只有最终产出的结果才会出现在 DOM 中。

在这里插入图片描述

Angular 会在真正渲染的时候填充 < ng-template> 的内容,并且把 < ng-template> 替换为一个供诊断用的注释。
NgFor和NgSwitch…指令也都遵循同样的模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值