Si tengo el siguiente botón en un archivo html
<button (click)="doSomething('testing', $event)">Do something</button>
Además, en el componente correspondiente, tengo esta función
doSomething(testString: string, event){
event.stopPropagation();
console.log(testString + ': I am doing something');
}
¿Existe un tipo adecuado que deba asignarse a la $event
entrada? El parámetro de evento en sí es un objeto, PERO si lo asigno a un objeto de tipo, aparece un error
La propiedad 'stopPropogation' no existe en el objeto de tipo
Entonces, ¿qué considera Typecript la $event
entrada?
javascript
typescript
angular
Alex J
fuente
fuente
doSomething(testString: string, event: MouseEvent)
Respuestas:
Como lo sugirió @AlexJ
El evento por el que pasó
$event
es un evento DOM, por lo tanto, puede usarEventName
como tipo.En su caso, este evento es un
MouseEvent
, y los documentos dicen, citandoEn todos esos casos obtendrá un
MouseEvent
.Otro ejemplo: si tienes este código
<input type="text" (blur)="event($event)"
Cuando se active el evento, obtendrá un
FocusEvent
.Para que pueda hacerlo realmente simple, registre el evento en la consola y verá un mensaje similar a este que tendrá el nombre del evento.
FocusEvent {isTrusted: true, relatedTarget: null, view: Window, detail: 0, which: 0…}
Siempre puede visitar los documentos para obtener una lista de los eventos existentes .
Editar
También puede verificar TypeScript
dom.generated.d.ts
con todas las mecanografías portadas. En tu casostopPropagation()
es parte deEvent
, ampliado porMouseEvent
.fuente
@Output
campo de tipoEventEmitter<T>
, normalmente un componente , entonces el tipo del$event
argumento esT
. Consulte angular.io/api/core/EventEmitter .Algunos eventos de uso común y sus nombres relacionados ( MouseEvent , FocusEvent , TouchEvent , DragEvent , KeyboardEvent ):
El Evento genérico está asociado a:
Si busca en el repositorio de Typescript , dom.generated.d.ts proporciona una interfaz de eventos globales (el crédito es para la respuesta de Eric ) donde puede encontrar todas las asignaciones de controladores de eventos en la línea 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; }
fuente
Según oficial
event
es de tipoObject
, también en mi caso cuandoevent
escribo caste al Objeto no arroja ningún error, pero después de leer la documentación de angular2 encontradoevent
es de tipoEventEmitter
para que pueda escribir caste su eventoEventEmitter
ver aquí es plunkr para el mismo http://plnkr.co/edit/8HRA3bM0NxXrzBAjWYXc?p=preview
para obtener más información, consulte https://angular.io/docs/ts/latest/guide/template-syntax.html#!#event-binding
fuente