99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Angular 事件綁定

2022-06-30 11:37 更新

事件綁定

通過(guò)事件綁定,你可以偵聽(tīng)并響應(yīng)用戶操作,例如按鍵、鼠標(biāo)移動(dòng)、點(diǎn)擊和觸摸。

包含本指南中的代碼段的工作示例,參見(jiàn)現(xiàn)場(chǎng)演練 / 下載范例。

綁定到事件

要綁定到事件,請(qǐng)使用 Angular 的事件綁定語(yǔ)法。此語(yǔ)法由等號(hào)左側(cè)括號(hào)內(nèi)的目標(biāo)事件名和右側(cè)引號(hào)內(nèi)的模板語(yǔ)句組成。在下面的示例中,目標(biāo)事件名是 ?click ?,模板語(yǔ)句是 ?onSave()? 。

<button (click)="onSave()">Save</button>

事件綁定偵聽(tīng)按鈕的單擊事件,并在發(fā)生單擊時(shí)調(diào)用組件的 ?onSave()?。

syntax-diagram

綁定到被動(dòng)事件

Angular 還支持被動(dòng)事件偵聽(tīng)器。例如,使用以下步驟使?jié)L動(dòng)事件變?yōu)楸粍?dòng)的。

  1. 在 ?src ?目錄下創(chuàng)建一個(gè)文件 ?zone-flags.ts? 。
  2. 將以下行添加到此文件中。
  3. (window as any)['__zone_symbol__PASSIVE_EVENTS'] = ['scroll'];
  4. 在 ?src/polyfills.ts? 文件中,在導(dǎo)入 zone.js 之前,先導(dǎo)入新創(chuàng)建的 ?zone-flags? 。
  5. import './zone-flags';
    import 'zone.js';  // Included with Angular CLI.

在這些步驟之后,如果你為 ?scroll ?事件添加事件偵聽(tīng)器,偵聽(tīng)器就會(huì)是 ?passive ?的。

使用 EventEmitter 自定義事件

指令通常使用 Angular 的 ?EventEmitter ?引發(fā)自定義事件,如下所示。

  1. 該指令創(chuàng)建一個(gè) ?EventEmitter ?并將其對(duì)外暴露為屬性。
  2. 然后,該指令調(diào)用 ?EventEmitter.emit(data)? 發(fā)出事件,傳入消息數(shù)據(jù),該消息數(shù)據(jù)可以是任何東西。
  3. 父指令通過(guò)綁定到該屬性來(lái)監(jiān)聽(tīng)事件,并通過(guò)傳入的 ?$event? 對(duì)象接收數(shù)據(jù)。

考慮一個(gè) ?ItemDetailComponent ?,它會(huì)顯示條目信息并響應(yīng)用戶操作。盡管 ?ItemDetailComponent ?顯示了一個(gè)刪除按鈕,但它并不包含刪除英雄的功能。它只會(huì)引發(fā)一個(gè)報(bào)告用戶要求刪除的事件。

<img src="{{itemImageUrl}}" [style.display]="displayNone">
<span [style.text-decoration]="lineThrough">{{ item.name }}
</span>
<button (click)="delete()">Delete</button>

該組件定義了一個(gè) ?deleteRequest ?返回 ?EventEmitter ?的屬性。當(dāng)用戶單擊 Delete 時(shí),該組件將調(diào)用 ?delete()? 方法,讓這個(gè) ?EventEmitter ?發(fā)出 ?Item ?對(duì)象。

// This component makes a request but it can't actually delete a hero.
@Output() deleteRequest = new EventEmitter<Item>();

delete() {
  this.deleteRequest.emit(this.item);
  this.displayNone = this.displayNone ? '' : 'none';
  this.lineThrough = this.lineThrough ? '' : 'line-through';
}

宿主父組件將綁定到 ?ItemDetailComponent ?的 ?deleteRequest ?事件,如下所示。

<app-item-detail (deleteRequest)="deleteItem($event)" [item]="currentItem"></app-item-detail>

當(dāng) ?deleteRequest ?事件觸發(fā)時(shí),Angular 就會(huì)以該條目為參數(shù)調(diào)用其父組件的 ?deleteItem()?。

確定事件目標(biāo)(target)

為了確定事件的目標(biāo),Angular 會(huì)檢查目標(biāo)事件的名稱是否與已知指令的事件屬性匹配。在以下示例中,Angular 會(huì)檢查 ?myClick ?是否來(lái)自自定義指令 ?ClickDirective ?的事件。

<h4>myClick is an event on the custom ClickDirective:</h4>
<button (myClick)="clickMessage=$event" clickable>click with myClick</button>
{{clickMessage}}

如果目標(biāo)事件名稱 ?myClick ?未能匹配元素上的事件或 ?ClickDirective ?的輸出屬性,則 Angular 將報(bào)告“未知指令”錯(cuò)誤。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)