# 属性绑定
Angular 中的属性绑定可帮助你设置 HTML 元素或指令的属性值。使用属性绑定,可以执行诸如切换按钮、以编程方式设置路径,以及在组件之间共享值之类的功能。
TIP
包含本指南中的代码片段的工作示例,请参阅现场演练/ 下载范例
。
# 前提条件
组件基础
模板基础
绑定语法
# 了解数据流
属性绑定在单一方向上将值从组件的属性送到目标元素的属性。
TIP
有关侦听事件的更多信息,请参阅事件绑定。
要读取目标元素的属性或调用其方法,请参阅 ViewChild
和 ContentChild
的 API 参考手册。
# 绑定到属性
要绑定到元素的属性,请将其放在方括号 []
中,这会将此属性标识为目标属性。
要绑定到元素的属性 ,请将其括在方括号 []
内,这会将此属性标为目标属性。目标属性就是你要对其进行赋值的 DOM 属性 。
要为 image 元素的目标属性(src
)赋值,请键入以下代码:
src/app/app.component.html
<img alt="item" [src]="itemImageUrl">
在大多数情况下,目标名称是 Property(属性)名称,即使它看起来是 Attribute(属性)名称。
在这个例子中,src
就是 <img>
元素的 Property 名称。
方括号 []
使 Angular 将等号的右侧看作动态表达式进行求值。
如果不使用方括号,Angular 就会将右侧视为字符串字面量并将此属性设置为该静态值。
要将字符串赋值给属性,请键入以下代码:
src/app.component.html
<app-item-detail childItem="parentItem"></app-item-detail>
省略方括号就会渲染出字符串 parentItem
,而不是 parentItem
的值。
# 将元素的属性设置为组件属性的值
要将 <img>
的 src
属性绑定到组件的属性,请将 src
放在方括号中,后跟等号,然后是组件的属性。
使用属性 itemImageUrl
,键入以下代码:
src/app/app.component.html
<img alt="item" [src]="itemImageUrl">
在组件类 AppComponent
中声明 itemImageUrl
属性。
src/app/app.component.ts
itemImageUrl = '../assets/phone.png';
# colspan
和 colSpan
最容易混淆的地方是 colspan
这个 Attribute 和 colSpan
这个 Property。请注意,这两个名称只有一个字母的大小写不同。
要通过 colSpan
使用属性绑定,请键入以下内容:
src/app/app.component.html
<!-- Notice the colSpan property is camel case -->
<tr><td [colSpan]="1 + 1">Three-Four</td></tr>
要在组件的 isUnchanged
属性为 true
时禁用按钮,请键入以下内容:
src/app/app.component.html
<!-- Bind button disabled state to `isUnchanged` property -->
<button type="button" [disabled]="isUnchanged">Disabled Button</button>
要设置指令的属性,请键入以下内容:
src/app/app.component.html
<p [ngClass]="classes">[ngClass] binding to the classes property making this blue</p>
要将自定义组件的模型属性设置为供父组件和子组件互相通信的,请键入以下内容:
src/app/app.component.html
<app-item-detail [childItem]="parentItem"></app-item-detail>
# 切换按钮功能
要使用布尔值来禁用某个按钮的特性,请将 DOM 属性 disabled
绑定到此类中的某个 Boolean 型属性。
src/app/app.component.html
<!-- Bind button disabled state to `isUnchanged` property -->
<button type="button" [disabled]="isUnchanged">Disabled Button</button>
由于 AppComponent
中属性 isUnchanged
的值是 true
,Angular 会禁用该按钮。
src/app/app.component.ts
isUnchanged = true;
# 下一步呢?
属性绑定的最佳实践
事件绑定
文本插值
类和样式绑定
attribute 绑定