Angular2 - 事件和属性 - 01

前面一张我们构建了新的Component,现在我们就开始学习Angular2的新语法,看看如何使用Angular2的新语法和属性。

首先我们mock一个Hero对象的数组。然后我们对这个数组做系列的操作。

import { Hero } from './hero' //如果你想要使用某一个对象。必须提交导入

export const HEROES:Hero[] = [
  { id: 1, name: 'Bruce' },
  { id: 2, name: 'Jason' },
  { id: 3, name: 'Jack' },
  { id: 4, name: 'Rose' },
  { id: 5, name: 'Tornado' },
  { id: 6, name: 'Bruce' }
]

然后在你需要使用的component 里面导入即可。这样我们就可以使用这个数组了。

import { HEROES } from '../Entities/mock-heroes'
  • *ngFor ,复制宿主元素以及 所有的子元素。(前面的* 是Angular的关键部分,不能忘记。)

      在Angular1.x 中当我们想要复制宿主元素的时候我们使用的ng-repeat,Angular2中。我们可以在标签上面添加*ngFor 来遍历HEROES。包含name=“for”的元素。已经子元素都将被复制。

<div name="for" *ngFor="let hero of heroes">
  <div>
    id : {{hero.id}} ,
    name : {{hero.name}}
  </div>
</div>
  • (click) ,click 事件
<div *ngFor="let hero of heroes">
  <div (click) ="selectHero()"> //调用Component中的方法
    id : {{hero.id}} ,
    name : {{hero.name}}
  </div>
</div>
  //Component中对应的click方法。
selectedHero: Hero; selectHero(hero: Hero):
void { this.selectedHero = hero; }
  • [(ngModule)],双向绑定属性,上一片我们已经有过接触。属性对应angular1.x中的ng-module。在使用ngModel进行双向绑定的时候,你必须导入FormsModule并吧他添加到Angular 模块的imports列表中。
  • *ngIf = "expression",对应angular1.x中的ng-if,具体用法如下,当expression=true的时候会显示元素和子元素,当expression=false,将不会出现DOM元素。元素在DOM中不站位。
<div *ngIf="expression">
   这是ngIf
</div>
  • [class.some-css-class] = "expression",前面的class是固定写法。some-css-class对应你的css文件中的css class。当expression=true的时候some-css-class将会添加到元素上面,当expression= false,css将不会添加到元素上面。
[class.selected]="hero === selectedHero"
  • [style.color] = "expression",前面的style固定写法。类似上面提到的[class.some-css-class],这个返回的是单个style的样式。
<button [style.color]="isSpecial ? 'red' : 'green'">
  • [hidden] = "expression",expression 是引用的Component 中的boolean属性,标识是否隐藏DOM元素。
<span [hidden]="isUnchanged">changed</span>
  • [disabled] = "expression",从DOM的方面来看。如果button设置了disableed无论这个值是true还是false这个button任然被禁用。但是通过Angular的disabled属性可以禁用或者启用按钮,我们可以通过设置expression的返回值来禁用或者启用button
<button [disabled]="isDisabled">Submit</button>
  • ngClass = "expression",Angular可以通过expression的方式来添加不同的cssl给DOM元素
//当isSpecial = true 时。special css将会添加到DOM中
<div [ngClass]="{'special': isSpecial}"></div>
//当isSpecial = true 时。special css将会添加到DOM中
//当isSpecial = false 时。normal css将会添加到DOM中
<div [ngClass]="{'special': isSpecial,'normal' : !isSpecial}"></div>
//也可以通过函数返回不同条件下的css
<div [ngClass]="currentClasses"></div>

//Component 中的function
currentClasses: {};
setCurrentClasses() {
this.currentClasses = {
'saveable': this.canSave,
'modified': !this.isUnchanged,
'special': this.isSpecial
};
}
  •  [ngStyle] 同时设置多个内联样式
<div [ngStyle]="currentStyles">
  This div is initially italic, normal weight, and extra large (24px).
</div>

currentStyles: {};
setCurrentStyles() {
  this.currentStyles = {
    'font-style':  this.canSave      ? 'italic' : 'normal',
    'font-weight': !this.isUnchanged ? 'bold'   : 'normal',
    'font-size':   this.isSpecial    ? '24px'   : '12px'
  };
}

 

posted @ 2018-12-20 11:11  Allen●J  阅读(866)  评论(0编辑  收藏  举报