Если у меня есть следующая кнопка в html файле
<button (click)="doSomething('testing', $event)">Do something</button>
Также в соответствующем компоненте у меня есть эта функция
doSomething(testString: string, event){
event.stopPropagation();
console.log(testString + ': I am doing something');
}
Есть ли правильный тип, который следует назначить $event
входу? Параметр события сам по себе является объектом, НО если я назначу его объекту типа, я получаю сообщение об ошибке
Свойство stopPropogation не существует для объекта типа
Итак, что Typescript считает $event
вводом?
javascript
typescript
angular
Алекс Дж
источник
источник
doSomething(testString: string, event: MouseEvent)
Ответы:
По предложению @AlexJ
Событие, через которое вы прошли,
$event
является событием DOM, поэтому вы можете использовать вEventName
качестве типа.В вашем случае это событие
MouseEvent
, и в документах говорится, цитируяВо всех этих случаях вы получите файл
MouseEvent
.Другой пример: если у вас есть этот код
<input type="text" (blur)="event($event)"
Когда событие сработает, вы получите файл
FocusEvent
.Таким образом, вы можете сделать это очень просто, запишите событие в консоль, и вы увидите сообщение, подобное этому, в котором мы будем иметь имя события
FocusEvent {isTrusted: true, relatedTarget: null, view: Window, detail: 0, which: 0…}
Вы всегда можете посетить документацию, чтобы просмотреть список существующих событий .
редактировать
Вы также можете проверить TypeScript
dom.generated.d.ts
со всеми перенесенными типами. В вашем случаеstopPropagation()
это частьEvent
, расширенная пользователемMouseEvent
.источник
@Output
, как правило, поле компонента типаEventEmitter<T>
, то тип$event
аргумента равенT
. См. Angular.io/api/core/EventEmitter .Некоторые часто используемые события и связанные с ними имена ( MouseEvent , FocusEvent , TouchEvent , DragEvent , KeyboardEvent ):
Общее событие связано с:
Если вы покопаетесь в репозитории Typescript , dom.generated.d.ts предоставляет интерфейс глобальных событий (кредит принадлежит ответу Эрика ), где вы можете найти все сопоставления обработчиков событий в строке 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; }
источник
Согласно официальному
event
представителю, типObject
, также в моем случае, когда яevent
привожу тип к объекту, он не выдает никаких ошибок, но после прочтения документации angular2 найденevent
тип,EventEmitter
поэтому вы можете ввести свое событие вEventEmitter
см. здесь plunkr для того же http://plnkr.co/edit/8HRA3bM0NxXrzBAjWYXc?p=preview
для получения дополнительной информации см. здесь https://angular.io/docs/ts/latest/guide/template-syntax.html#!#event-binding
источник