数据绑定

2019-01-21  本文已影响0人  2764906e4d3d

数据绑定

  1. 数据绑定允许将组件控制器的数据和方法与模板连接起来,减少了代码量

{{msg}}

<img [src]="imgurl">
<img src="{{imgurl}}">
imgurl: string = 'http://placehold.it/400x220';
<button (click)="doOnClick($event)">click</button>
doOnClick($event: any) {
  console.log(event);
}
  1. DOM和HTML属性的不同,DOM是随着输入的值变化的,而HTML获取的是初始化的数据,是不会随着输出改变的,少量的HTML属性和DOM属性有1:1映射(id),有些HTML属性没有DOM属性(colspan),有些DOM属性没有HTML属性(textContent)
<input (input)="doOnInput($event)" value="Tom">
doOnInput($event: any) {
  console.log(event.target.value);
  console.log(event.target.getAttribute('value'));
}

HTML绑定

  1. 基本的HTML属性绑定
<table><tr>
  <td [attr.colspan]="size" ]></td>
</tr></table>
  1. css类绑定
    绑定的class类会完全替代其他类,第二种是class加上一个样式的绑定,后面这个表达式是一个布尔值,当值为true的时候这个div上才会出现这个class,反之则没有,第三种是ngClass绑定,通过表达式来控制多个类是否显示
<div class="abc" [class]="someExpression">something</div>

<div [class.special]="isSpecial">something</div>

<div [ngClass]="{a:isa,b:isb}"></div>
<div [class]="divClass"></div>
divClass: string;
constructor() {
  setTimeOut(() => {
      this.class = "a b c";
    }

    , 3000);
}
<div class="a b" [class.c]="isBig"></div>
<div [ngClass]="divClass2"></div>
divClass2: any= {
  a: false,
  b: false,
  c: false
};
isBig: boolean = false;
constructor() {
  setTimeOut(() => {
      this.divClass2 =true;
    }, 3000);
}

样式绑定

  1. 第一个个表达式用来控制 颜色显示,第二个用来控制font-style样式是通过后面的的表达式来决定样式(是italic还是normal)
<div [style.color]="isSpecial?red:green"></div>
<div [ngStyle]="{'font-style':this.canSave?'italic':'normal'}"></div>
  1. angular 的数据绑定默认为单向绑定
上一篇下一篇

猜你喜欢

热点阅读