Angular筆記

組件

結構

import {...} from ...;
/*註解,告訴編譯器加載內容*/
@Component({
    selector:'...',//標籤名
    template:'...',//組件模板,使用url加載或直接寫;插值綁定:變量聲明使用{{...}}:
      //或者:templateUrl: './hero-detail.component.html',
      //styleUrls: ['./hero-detail.component.css'],
    ...
    })

export class AppComponent {
    name='...';屬性
}

根組件的聲明

//通過 [root] = 組件變量,聲明根組件
<ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>

模板(template)

<input [(ngModel)]="hero.name" placeholder="name">//雙向綁定數據
/*利用循環,顯示數據,let .. of ..的語法*/
<ul class="heroes">
  <li *ngFor="let hero of heroes">
    <span class="badge">{{hero.id}}</span> {{hero.name}}
  </li>
</ul>
/*事件綁定 (...事件)="函數"*/
<li *ngFor="let hero of heroes" (click)="onSelect(hero)">
/*if語句 *ngIf="變量"*/
<div *ngIf="selectedHero">
...
</div>
/*css樣式;利用[class.selected]=true|false來控制移除和添加*/
<li *ngFor="let hero of heroes"
  [class.selected]="hero === selectedHero"
  (click)="onSelect(hero)">
  <span class="badge">{{hero.id}}</span> {{hero.name}}
</li>
/*變量綁定,將數據傳到子組件*/
<hero-detail [hero]="selectedHero"></hero-detail>
/*綁定到的目標屬性必須是一個輸入屬性,否則Angular會拒絕綁定,並拋出一個錯誤。*/
@Input() hero: Hero;

服務

獲取數據,方便所有的組件共享數據
//初始化
import { Injectable } from '@angular/core';

@Injectable()
export class HeroService {
}

路由

//導入模塊
import { RouterModule }   from '@angular/router';
//加載
@NgModule({
imports: [
   ...
    RouterModule.forRoot([
      {
        path: 'heroes',
        component: HeroesComponent
      }
    ])
  ],
  ...
})

//添加標籤
template: `
   <h1>{{title}}</h1>
   <a routerLink="/heroes">Heroes</a>
   <router-outlet></router-outlet>
 `

數據綁定

<li>{{hero.name}}</li>
<hero-detail [hero]="selectedHero"></hero-detail>
<li (click)="selectHero(hero)"></li>
  • {{hero.name}}插值表達式在 li 標籤中顯示組件的hero.name屬性的值。
  • [hero]屬性綁定把父組件HeroListComponent的selectedHero的值傳到子組件HeroDetailComponent的hero屬性中。
  • (click) 事件綁定在用戶點擊英雄的名字時調用組件的selectHero方法。

  • 雙向數據綁定是重要的第四種綁定形式,它使用ngModel指令組合了屬性綁定和事件綁定的功能。 下面是HeroDetailComponent模板的範例:

<input [(ngModel)]="hero.name">

鍵盤、鼠標事件

模板引用變量,使用 #name ,來標記當前標籤爲變量
@Component({
  selector: 'little-tour',
  template: `
    <input #newHero
      (keyup.enter)="addHero(newHero.value)"
      (blur)="addHero(newHero.value); newHero.value='' ">

    <button (click)="addHero(newHero.value)">Add</button>

    <ul><li *ngFor="let hero of heroes">{{hero}}</li></ul>
  `
})
export class LittleTourComponent {
  heroes = ['Windstorm', 'Bombasto', 'Magneta', 'Tornado'];
  addHero(newHero: string) {
    if (newHero) {
      this.heroes.push(newHero);
    }
  }
}

通過 ngModel 跟蹤修改狀態與有效性驗證

狀態 爲真時的 CSS 類 爲假時的 CSS 類
控件被訪問過。 ng-touched ng-untouched
控件的值變化了。 ng-dirty ng-pristine
控件的值有效。 ng-valid ng-invalid
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章