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 $evententrada? 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 $evententrada?
javascript
typescript
angular
Alex J
fuente
fuente

doSomething(testString: string, event: MouseEvent)Respuestas:
Como lo sugirió @AlexJ
El evento por el que pasó
$eventes un evento DOM, por lo tanto, puede usarEventNamecomo 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.tscon todas las mecanografías portadas. En tu casostopPropagation()es parte deEvent, ampliado porMouseEvent.fuente
@Outputcampo de tipoEventEmitter<T>, normalmente un componente , entonces el tipo del$eventargumento 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
eventes de tipoObject, también en mi caso cuandoeventescribo caste al Objeto no arroja ningún error, pero después de leer la documentación de angular2 encontradoeventes de tipoEventEmitterpara que pueda escribir caste su eventoEventEmitterver 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