Si j'ai le bouton suivant dans un fichier html
<button (click)="doSomething('testing', $event)">Do something</button>
En outre, dans le composant correspondant, j'ai cette fonction
doSomething(testString: string, event){
event.stopPropagation();
console.log(testString + ': I am doing something');
}
Existe-t-il un type approprié à attribuer au $event
contribution? Le paramètre event lui-même est un objet, MAIS si je l'assigne à un objet type, j'obtiens une erreur
La propriété 'stopPropogation' n'existe pas sur l'objet type
Alors, qu'est-ce que TypeScript considère comme le $event
contribution?
Comme suggéré par @AlexJ
L'événement que vous avez transmis via $event
Est un événement DOM. Par conséquent, vous pouvez utiliser EventName
comme type.
Dans votre cas, cet événement est un MouseEvent
, et la documentation indique en citant
L’interface MouseEvent représente les événements qui se produisent du fait que l’utilisateur interagit avec un périphérique de pointage (tel qu'une souris). Les événements courants utilisant cette interface incluent click, dblclick, mouseup, mousedown .
Dans tous ces cas, vous aurez un MouseEvent
.
Autre exemple: si vous avez ce code
<input type="text" (blur)="event($event)"
Lorsque l'événement se déclenche, vous obtenez un FocusEvent
.
Donc, vous pouvez le faire très simplement, consignez l’événement par la console et vous verrez un message semblable à celui-ci avec le nom de l’événement.
FocusEvent {isTrusted: true, relatedTarget: null, view: Window, detail: 0, which: 0…}
Vous pouvez toujours consulter la documentation pour obtenir une liste des événements existants Events .
Modifier
Vous pouvez également vérifier TypeScript dom.generated.d.ts
avec tous les typings portés. Dans votre cas, stopPropagation()
fait partie de Event
, étendu de MouseEvent
.
Selon le fonctionnaire event
est de type Object
, également dans mon cas lorsque je tape _secule event
dans Object, il ne génère aucune erreur, mais après avoir lu la documentation de angular2 trouvée event
est de type EventEmitter
afin que vous puissiez taper caste votre événement dans EventEmitter
voir ici est plunkr pour le même http://plnkr.co/edit/8HRA3bM0NxXrzBAjWYXc?p=preview
pour plus d'informations, voir ici https://angular.io/docs/ts/latest/guide/template-syntax.html#!#event-binding