學(xué)會(huì) Angular7--- (二) 模板語(yǔ)法,組件呆盖,輸入輸出

一. 模板語(yǔ)法

1. *ngFor


*ngFor 是一個(gè) "結(jié)構(gòu)型指令"拖云。結(jié)構(gòu)型指令會(huì)通過(guò)添加、刪除和操縱它們的宿主元素等方式塑造或重塑 DOM 的結(jié)構(gòu)应又。任何帶有 * 的指令都是結(jié)構(gòu)型指令宙项。

  1. *ngFor 用于數(shù)組遍歷
    *ngFor 會(huì)導(dǎo)致 <div> 被列表中的每個(gè)商品都重復(fù)渲染一次。
  2. 語(yǔ)法舉例: <div *ngFor="let product of products"> </div>

2. 插值語(yǔ)法 {{}}


Interpolation {{ }}

  1. 插值會(huì)把屬性的值作為文本渲染出來(lái)
  2. 語(yǔ)法舉例: {{product.name}}

3. 屬性綁定語(yǔ)法 [ ]


Property binding [ ]

  1. 屬性綁定語(yǔ)法 [ ] 允許你在模板表達(dá)式中使用屬性值株扛。
  2. 語(yǔ)法舉例:<a [title]="product.name + ' details'">

4. *ngIf


  1. *ngIf 表示條件
  2. 語(yǔ)法舉例:<p *ngIf="product.description">

5. 添加按鈕 button 事件綁定( )


Event bingding()

  1. 把 button 的 click 事件綁定到我們替你定義好的 share() 事件上
  2. 語(yǔ)法舉例:<button (click)="share()">
<h2>Products</h2>
<div *ngFor = "let product of products">
  <h3>
    <a [title]="product.name + 'details'">{{product.name}}
</a>
{{product.price}}
  </h3>
<p *ngIf ="product.description">
  Description: {{product.description}}
</p>
<button (click)="share()">
  Share
</button>
</div>

詳細(xì)的Angular 模板語(yǔ)法指南:
https://www.angular.cn/guide/template-syntax

二. 組件

Angular 應(yīng)用程序由一棵組件樹(shù)組成尤筐,每個(gè) Angular 組件都有一個(gè)明確的用途和責(zé)任汇荐。

1. 組件組成

  • 組件類(lèi) class xxxComponent
    • typescript 文件
    • 它用來(lái)處理數(shù)據(jù)和功能
  • HTML 模板
    • html 文件
    • 它決定了用戶(hù)的呈現(xiàn)方式
  • CSS 樣式
    • css 文件
    • 組件專(zhuān)屬的樣式定義了外觀和感覺(jué)

2. 基礎(chǔ)組件 app-root

  1. 是應(yīng)用的外殼
  2. 要加載的第一個(gè)組件
  3. 所有其他組件的父組件,類(lèi)似于基礎(chǔ)頁(yè)面

三. 輸入輸出

1. 輸入

import { Input } from '@angular/core';

  1. Input 一個(gè)裝飾器盆繁,用來(lái)把某個(gè)類(lèi)字段標(biāo)記為輸入屬性掀淘,并提供配置元數(shù)據(jù)。該輸入屬性會(huì)綁定到模板中的某個(gè)DOM 屬性油昂。當(dāng)檢測(cè)到變化時(shí)革娄,Angular 會(huì)自動(dòng)使用這個(gè)DOM 屬性的值來(lái)更新此數(shù)據(jù)屬性。
    Decorator that marks a class field as an input property and supplies configuration metadata. The input property is bound to a DOM property in the template.During change detection, Angular automatically updates the data property with the DOM property's value.
  2. 語(yǔ)法: @Input() bindingPropertyName: string
    bindingPropertyName : the name of the DOM property to which the input property is bound.
  3. 使用方法:
    @Input () bankName: string;
    @Input('account-id') id:string

2. 輸出

import { Output } from '@angular/core';

  1. 一個(gè)裝飾器冕碟,用于把一個(gè)類(lèi)字段標(biāo)記為輸出屬性拦惋,并提供配置元數(shù)據(jù)。 凡是綁定到輸出屬性上的 DOM 屬性安寺,Angular 在變更檢測(cè)期間都會(huì)自動(dòng)進(jìn)行更新厕妖。
    Decorator that marks a class field as an output property and supplies configuration metadata. The DOM property bound to the output property is automatically updated during change detection.
    @Output() notify = new EventEmitter(); //實(shí)例化一個(gè)notify 屬性

3. EventEmitter

import { EventEmitter } from '@angular/core';
有 2 種 methods: emit() 和 subscribe()

  • emit() Emits an event containing a given value.
  • subscribe() Registers handlers for events emitted by this instance.
    <button (click)="notify.emit()">Notify Me</button> // 用事件綁定更新"Notify me"
    用于發(fā)送傳統(tǒng)事件,并為這些事件注冊(cè)處理器挑庶。
    Use in directives and components to emit custom events synchronously or asynchronously, and register handlers for those events by subscribing to an instance.
1. 創(chuàng)建一個(gè)用于提醒的組件 product-alerts

src/app/product-alerts/product-alerts.component.ts

import { Component } from '@angular/core';
import { Input } from '@angular/core';
import { Output, EventEmitter } from '@angular/core';
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-product-alerts',
  templateUrl: './product-alerts.component.html',
  styleUrls: ['./product-alerts.component.css']
})
export class ProductAlertsComponent  {
@Input product ;
@Output notify = new EventEmitter();

}

src/app/product-alerts/product-alerts.component.html

<p *ngIf]="product.price > 700"> <button>Notify Me</button>  </p>
2. 將組件 product-alerts顯示為商品列表product-list 的一部分(即 作為product-list 的子組件)叹放,通過(guò)屬性綁定把當(dāng)前商品作為輸入傳遞給組件。

src/app/product-list/product-list.component.html


<app-product-alerts
  [product]="product">
</app-product-alerts>
3. 定義單擊該按鈕時(shí)應(yīng)該發(fā)生的行為

src/app/product-list/product-list.component.ts

export class ProductListComponent {
  products = products;
  share() {
    window.alert('The product has been shared!');
  }
  onNotify() {
    window.alert('You will be notified when the product goes on sale');
  }
}
4. 接收product-alert 組件輸出來(lái)更新 product-list 組件,將product-alert 組件的notify事件綁定到product-list 組件的方法 onNotify()

src/app/product-list/product-list.component.html

<app-product-alerts
  [product]="product" 
  (notify)="onNotify()">
</app-product-alerts>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挠羔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子埋嵌,更是在濱河造成了極大的恐慌破加,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雹嗦,死亡現(xiàn)場(chǎng)離奇詭異范舀,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)了罪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)锭环,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人泊藕,你說(shuō)我怎么就攤上這事辅辩。” “怎么了娃圆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵玫锋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我讼呢,道長(zhǎng)撩鹿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任悦屏,我火速辦了婚禮节沦,結(jié)果婚禮上键思,老公的妹妹穿的比我還像新娘。我一直安慰自己甫贯,他們只是感情好吼鳞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著获搏,像睡著了一般赖条。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上常熙,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天纬乍,我揣著相機(jī)與錄音,去河邊找鬼裸卫。 笑死仿贬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的墓贿。 我是一名探鬼主播茧泪,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼聋袋!你這毒婦竟也來(lái)了队伟?” 一聲冷哼從身側(cè)響起殿怜,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤朗恳,失蹤者是張志新(化名)和其女友劉穎惫东,沒(méi)想到半個(gè)月后扔涧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體葵袭,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛙酪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年已亥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了炼团。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咪惠。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡击吱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遥昧,到底是詐尸還是另有隱情覆醇,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布炭臭,位于F島的核電站叫乌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏徽缚。R本人自食惡果不足惜憨奸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凿试。 院中可真熱鬧排宰,春花似錦似芝、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盐类,卻和暖如春寞奸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背在跳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工枪萄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猫妙。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓瓷翻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親割坠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子齐帚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 學(xué)習(xí)資料來(lái)自 Angular.cn 與 Angular.io。 模板語(yǔ)法 在線例子 在 Angular 中彼哼,組件扮...
    小鐳Ra閱讀 3,745評(píng)論 0 3
  • 模板語(yǔ)法 模板是編寫(xiě) Angular 組件最重要的一環(huán)对妄,你至少需要深入理解以下知識(shí)點(diǎn)才能玩轉(zhuǎn) Angular 模板...
    Junting閱讀 779評(píng)論 0 1
  • 版本:Angular 5.0.0-alpha AngularDart(本文檔中我們通常簡(jiǎn)稱(chēng) Angular ) 是...
    soojade閱讀 836評(píng)論 0 4
  • 1.組件 組件負(fù)責(zé)控制屏幕上的一小塊區(qū)域,我們稱(chēng)之為視圖敢朱。例如饥伊,下列視圖都是由組件控制的: 帶有導(dǎo)航鏈接的應(yīng)用根組...
    不去解釋閱讀 554評(píng)論 0 1
  • 創(chuàng)建一個(gè)組件 獨(dú)立模板 內(nèi)聯(lián)模板 顯示值 插值法 綁定值 從數(shù)據(jù)流向劃分為 3 種: 數(shù)據(jù)源 -> Templat...
    bei6閱讀 3,044評(píng)論 0 0