Angular學習筆記(一)

本文爲原創文章,轉載請標明出處

目錄

  1. 架構
  2. 模板與數據綁定
  3. 生命週期

1. 架構

模塊

Angular 應用是模塊化的,並且 Angular 有自己的模塊系統,它被稱爲 Angular 模塊NgModules
Angular 模塊都是一個帶有 @NgModule 裝飾器的類。
NgModule 是一個裝飾器函數,它接收一個用來描述模塊屬性的元數據對象。其中最重要的屬性是:

`declarations` - 聲明本模塊中擁有的視圖類。Angular 有三種視圖類:組件、指令和管道。
`exports` - declarations 的子集,可用於其它模塊的組件模板。
`imports` - 本模塊聲明的組件模板需要的類所在的其它模塊。
`providers` - 服務的創建者,並加入到全局服務列表中,可用於應用任何部分。
`bootstrap` - 指定應用的主視圖(稱爲根組件),它是所有其它視圖的宿主。只有根模塊才能設置 `bootstrap` 屬性。

組件

組件負責控制視圖,通過一些由屬性和方法組成的 API 與視圖交互。

模板

模板以 HTML 形式存在,告訴 Angular 如何渲染組件。

元數據

元數據告訴 Angular 如何處理一個類。
@Component 裝飾器能接受一個配置對象, Angular 會基於這些信息創建和展示組件及其視圖。
@Component 裏面的元數據會告訴 Angular 從哪裏獲取你爲組件指定的主要的構建塊。
@Component 的配置項包括:

`selector` - CSS 選擇器,它告訴 Angular 在父級 HTML 中查找標籤,創建並插入該組件。
`templateUrl` - 組件 HTML 模板的模塊相對地址。
`providers` - 組件所需服務的依賴注入提供商數組。

數據綁定

Angular 支持數據綁定,一種讓模板的各部分與組件的各部分相互合作的機制。 往模板 HTML 中添加綁定標記,來告訴 Angular 如何把二者聯繫起來。

指令

Angular 模板是動態的。當 Angular 渲染它們時,它會根據指令提供的操作對 DOM 進行轉換。

服務

服務是一個廣義範疇,包括:值、函數,或應用所需的特性。

依賴注入

大多數依賴都是服務。 Angular 使用依賴注入來提供新組件以及組件所需的服務。

2. 模板與數據綁定

綁定的類型可以根據數據流的方向分成三類: 從數據源到視圖、從視圖到數據源以及雙向的從視圖到數據源再到視圖。

數據方向 語法 綁定類型
單向
從數據源到視圖目標
{{ expression }}
[target]="expression"
bind-target="expression"
插值表達式
Property
Attribute

樣式
單向
從視圖目標到數據源
(target)="statement"
on-target="statement"
事件
雙向 [(target)]="expression"
bindon-target="expression"
雙向

數據綁定的目標是 DOM 中的某些東西。 這個目標可能是(元素 | 組件 | 指令的)property、(元素 | 組件 | 指令的)事件,或(極少數情況下) attribute 名。 下面是的彙總表:

綁定類型 目標 範例
Property 元素的 property
組件的 property
指令的 property
<img [src]="heroImageUrl">
<app-hero-detail [hero]="currentHero"></app-hero-detail>
<div [ngClass]="{'special': isSpecial}"></div>
事件 元素的事件
組件的事件
指令的事件
<button (click)="onSave()">Save</button>
<app-hero-detail (deleteRequest)="deleteHero()"></app-hero-detail>
<div (myClick)="clicked=$event" clickable>click me</div>
雙向 事件與 property <input [(ngModel)]="name">
Attribute attribute <button [attr.aria-label]="help">help</button>
CSS 類 class property <div [class.special]="isSpecial">Special</div>
樣式 style property <button [style.color]="isSpecial ? 'red' : 'green'"></button>

內置屬性型指令

  • NgClass - 添加或移除一組CSS類
  • NgStyle - 添加或移除一組CSS樣式
  • NgModel - 雙向綁定到HTML表單元素

內置結構型指令

  • NgIf - 根據條件把一個元素添加到DOM中或從DOM移除
  • NgSwitch - 一組指令,用於切換一組視圖
  • NgFor - 對列表中的每個條目重複套用同一個模板

模板引用變量

  • # var

3. 生命週期

ngOnChanges()

當 Angular 重新設置數據綁定輸入屬性時響應。該方法接受當前和上一屬性值的 SimpleChanges 對象。
當被綁定的輸入屬性的值發生變化時調用,首次調用一定會發生在 ngOnInit() 之前。

ngOnInit()

在 Angular 第一次顯示數據綁定和設置指令/組件的輸入屬性之後,初始化指令/組件。
在第一輪 ngOnChanges() 完成之後調用,只調用一次。

ngDoCheck()

檢測,並在發生 Angular 無法或不願意自己檢測的變化時作出反應。
在每個 Angular 變更檢測週期中調用,ngOnChanges()ngOnInit() 之後。

ngAfterContentInit()

當把內容投影進組件之後調用。
第一次 ngDoCheck() 之後調用,只調用一次。
只適用於組件。

ngAfterContentChecked()

每次完成被投影組件內容的變更檢測之後調用。
ngAfterContentInit() 和每次 ngDoCheck() 之後調用。
只適合組件。

ngAfterViewInit()

初始化完組件視圖及其子視圖之後調用。
第一次 ngAfterContentChecked() 之後調用,只調用一次。
只適合組件。

ngAfterViewChecked()

每次做完組件視圖和子視圖的變更檢測之後調用。
ngAfterViewInit() 和每次 ngAfterContentChecked() 之後調用。
只適合組件。

ngOnDestroy

在 Angular 銷燬指令/組件之前調用。

如有不當之處,請予指正,謝謝~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章