Jika saya memiliki tombol berikut dalam file html
<button (click)="doSomething('testing', $event)">Do something</button>
Juga, dalam komponen yang sesuai, saya memiliki fungsi ini
doSomething(testString: string, event){
event.stopPropagation();
console.log(testString + ': I am doing something');
}
Apakah ada tipe yang tepat yang harus diberikan ke $event
input? Parameter event itu sendiri adalah sebuah objek, TAPI jika saya menetapkannya ke objek tipe, saya mendapatkan kesalahan
Properti 'stopPropogation' tidak ada pada objek tipe
Jadi, apa yang dianggap $event
masukan oleh Typecript ?
javascript
typescript
angular
Alex J.
sumber
sumber
doSomething(testString: string, event: MouseEvent)
Jawaban:
Seperti yang disarankan oleh @AlexJ
Peristiwa yang Anda lewati
$event
adalah peristiwa DOM, oleh karena itu Anda dapat menggunakanEventName
sebagai tipe.Dalam kasus Anda, acara ini adalah
MouseEvent
, dan dokumen mengatakan, mengutipDalam semua kasus tersebut, Anda akan mendapatkan file
MouseEvent
.Contoh lain: jika Anda memiliki kode ini
<input type="text" (blur)="event($event)"
Saat peristiwa dipicu, Anda akan mendapatkan file
FocusEvent
.Jadi Anda dapat melakukannya dengan sangat sederhana, konsol mencatat acara tersebut dan Anda akan melihat pesan yang mirip dengan pesan ini yang akan kami beri nama acara
FocusEvent {isTrusted: true, relatedTarget: null, view: Window, detail: 0, which: 0…}
Anda selalu dapat mengunjungi dokumen untuk melihat daftar Acara yang ada .
Sunting
Anda juga dapat memeriksa TypeScript
dom.generated.d.ts
dengan semua pengetikan porting. Dalam kasus AndastopPropagation()
adalah bagian dariEvent
, diperpanjang olehMouseEvent
.sumber
@Output
, biasanya bidang komponen tipeEventEmitter<T>
, maka jenis$event
argumennya adalahT
. Lihat angular.io/api/core/EventEmitter .Beberapa peristiwa yang umum digunakan dan nama yang terkait ( MouseEvent , FocusEvent , TouchEvent , DragEvent , KeyboardEvent ):
Generik Acara dikaitkan ke:
Jika Anda menggali di repositori Typecript , dom.generated.d.ts menyediakan antarmuka peristiwa global (kredit diberikan ke jawaban Eric ) di mana Anda dapat menemukan semua pemetaan pengendali peristiwa di baris 5725 :
interface GlobalEventHandlersEventMap { "abort": UIEvent; "animationcancel": AnimationEvent; "animationend": AnimationEvent; "animationiteration": AnimationEvent; "animationstart": AnimationEvent; "auxclick": MouseEvent; "blur": FocusEvent; "cancel": Event; "canplay": Event; "canplaythrough": Event; "change": Event; "click": MouseEvent; "close": Event; "contextmenu": MouseEvent; "cuechange": Event; "dblclick": MouseEvent; "drag": DragEvent; "dragend": DragEvent; "dragenter": DragEvent; "dragexit": Event; "dragleave": DragEvent; "dragover": DragEvent; "dragstart": DragEvent; "drop": DragEvent; "durationchange": Event; "emptied": Event; "ended": Event; "error": ErrorEvent; "focus": FocusEvent; "focusin": FocusEvent; "focusout": FocusEvent; "gotpointercapture": PointerEvent; "input": Event; "invalid": Event; "keydown": KeyboardEvent; "keypress": KeyboardEvent; "keyup": KeyboardEvent; "load": Event; "loadeddata": Event; "loadedmetadata": Event; "loadend": ProgressEvent; "loadstart": Event; "lostpointercapture": PointerEvent; "mousedown": MouseEvent; "mouseenter": MouseEvent; "mouseleave": MouseEvent; "mousemove": MouseEvent; "mouseout": MouseEvent; "mouseover": MouseEvent; "mouseup": MouseEvent; "pause": Event; "play": Event; "playing": Event; "pointercancel": PointerEvent; "pointerdown": PointerEvent; "pointerenter": PointerEvent; "pointerleave": PointerEvent; "pointermove": PointerEvent; "pointerout": PointerEvent; "pointerover": PointerEvent; "pointerup": PointerEvent; "progress": ProgressEvent; "ratechange": Event; "reset": Event; "resize": UIEvent; "scroll": Event; "securitypolicyviolation": SecurityPolicyViolationEvent; "seeked": Event; "seeking": Event; "select": Event; "selectionchange": Event; "selectstart": Event; "stalled": Event; "submit": Event; "suspend": Event; "timeupdate": Event; "toggle": Event; "touchcancel": TouchEvent; "touchend": TouchEvent; "touchmove": TouchEvent; "touchstart": TouchEvent; "transitioncancel": TransitionEvent; "transitionend": TransitionEvent; "transitionrun": TransitionEvent; "transitionstart": TransitionEvent; "volumechange": Event; "waiting": Event; "wheel": WheelEvent; }
sumber
Menurut official
event
adalah tipeObject
, juga dalam kasus saya ketika saya mengetikkanevent
ke Objek itu tidak menimbulkan kesalahan apa pun, tetapi setelah membaca dokumentasi angular2 yang ditemukanevent
adalah tipeEventEmitter
sehingga Anda dapat mengetikkan kasta acara Anda ke dalamEventEmitter
lihat di sini adalah plunkr untuk http://plnkr.co/edit/8HRA3bM0NxXrzBAjWYXc yang sama?p=preview
untuk info lebih lanjut lihat di sini https://angular.io/docs/ts/latest/guide/template-syntax.html#!#event-binding
sumber