插值表达式
``: Angular 对所有双花括号中的表达式求值,把求值的结果转换成字符串
模版表达式
[property]="expression"
表达式上下文
表达式中的上下文变量是由模板变量、指令的上下文变量(如果有)和组件的成员叠加而成的。最常见的上下文是组件实例:是绑定值的来源。此外还包含模版输入变量let hero
,模版引用变量#heroInput
优先级:模版变量 > 指令的上下文变量 > 组件的成员
模版语句
(event)="statement"
绑定语法
Html attribute 和 DOM property的区别
attribute
是DOM 中 Node 的属性,一些自定义的属性可以从 document.getElementById('id').getAttribute('data-diy')
拿到。比如 <input id="check1" type="checkbox" checked="checked">
,attribute 对应着 defaultProperty,他的值不会随着复选框的状态而改变,而 property 会。
property
是 js 对象的属性,自定义的 html 标签上的 attribute 是不能通过 document.getElementById('id')['data-diy']
拿到的。
attribute(对于非自定义的) 初始化 DOM property,然后它们的任务就完成了。property 的值可以改变;attribute 的值不能改变。
在 Angular 的世界中,attribute 唯一的作用是用来初始化元素和指令的状态。 当进行数据绑定时,只是在与元素和指令的 property 和事件打交道,而 attribute 就完全靠边站了
模板绑定是通过 property 和事件来工作的,而不是 attribute。
插值表达式
属性绑定
attribute绑定
<td [attr.colspan]="1 + 1">One-Two</td>
这是“绑定到目标属性 (property)”这条规则中唯一的例外。这是唯一的能创建和设置 attribute 的绑定形式。
CSS类绑定
<div [class.special]="isSpecial">The class binding is special</div>
样式绑定
<button [style.color]="isSpecial ? 'red': 'green'">Red</button>
事件绑定
自定义事件
双向绑定
当一个元素拥有可以设置的属性x和对应的事件xChange时,解释[(x)]语法就容易多了
巨坑:想要绑定ngModelChange
,一定要有[ngModel]
。也就是说,不能单向绑定事件,想要绑定事件,必须要有属性绑定
内置指令
内置属性型指令
- NgClass
- NgStyle
- NgModel
内置结构型指令
- NgIf
- NgFor
- NgSwitch
- #var
- @Input
- @Output
模版表达式操作符
- 管道操作符
|
- uppercase
- lowercase
- date
- json
- 安全导航操作符
?.
- 非空断言操作符
!