Se eu tiver o seguinte botão em um arquivo html
<button (click)="doSomething('testing', $event)">Do something</button>
Além disso, no componente correspondente, tenho esta função
doSomething(testString: string, event){
event.stopPropagation();
console.log(testString + ': I am doing something');
}
Existe um tipo adequado que deve ser atribuído à $event
entrada? O parâmetro do evento em si é um objeto, MAS se eu atribuí-lo a um objeto de tipo, recebo um erro
A propriedade 'stopPropogation' não existe no tipo de objeto
Então, o que o Typescript considera a $event
entrada?
javascript
typescript
angular
Alex J
fonte
fonte
doSomething(testString: string, event: MouseEvent)
Respostas:
Como sugerido por @AlexJ
O evento pelo qual você passou
$event
é um evento DOM, portanto, você pode usar oEventName
como o tipo.No seu caso, este evento é um
MouseEvent
, e a documentação diz, citandoEm todos esses casos, você receberá um
MouseEvent
.Outro exemplo: se você tiver este código
<input type="text" (blur)="event($event)"
Quando o evento for disparado, você receberá um
FocusEvent
.Então você pode fazer de forma bem simples, o console registra o evento e você verá uma mensagem semelhante a esta que terá o nome do evento
FocusEvent {isTrusted: true, relatedTarget: null, view: Window, detail: 0, which: 0…}
Você sempre pode visitar a documentação para obter uma lista dos eventos existentes .
Editar
Você também pode verificar o TypeScript
dom.generated.d.ts
com todas as digitações transferidas. No seu caso,stopPropagation()
faz parte deEvent
, estendido porMouseEvent
.fonte
@Output
, normalmente um campo de componente do tipoEventEmitter<T>
, então o tipo do$event
argumento éT
. Consulte angular.io/api/core/EventEmitter .Alguns eventos comumente usados e seus nomes relacionados ( MouseEvent , FocusEvent , TouchEvent , DragEvent , KeyboardEvent ):
O evento genérico está associado a:
Se você vasculhar o repositório do Typescript, dom.generated.d.ts fornece uma interface de eventos globais (o crédito vai para a resposta de Eric ) onde você pode encontrar todos os mapeamentos de manipuladores de eventos na linha 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; }
fonte
De acordo com o oficial
event
é do tipoObject
, também no meu caso quando eu digitoevent
no objeto ele não lança nenhum erro, mas após ler a documentação do angular2 encontradoevent
é do tipoEventEmitter
para que você possa digitar caste seu eventoEventEmitter
veja aqui é plunkr para o mesmo http://plnkr.co/edit/8HRA3bM0NxXrzBAjWYXc?p=preview
para obter mais informações, consulte aqui https://angular.io/docs/ts/latest/guide/template-syntax.html#!#event-binding
fonte