Tengo tal evento de clic
<button (click)="toggle($event)" class="someclass" id="btn1"></button>
<button (click)="toggle($event)" class="someclass" id="btn2"></button>
Estoy capturando el evento en mi parámetro de entrada de función y quiero saber exactamente en qué botón se hizo clic.
toggle(event) {
}
pero eventno tiene idpropiedad.
altKey: false
bubbles: true
button: 0
buttons: 0
cancelBubble: false
cancelable: true
clientX: 1198
clientY: 29
ctrlKey: false
currentTarget: button#hdrbtn_notificaton.mdl-button.mdl-js-button.mdl-js-ripple-effect.mdl-button--icon
defaultPrevented: false
detail: 1
eventPhase: 3
fromElement: null
isTrusted: true
isTrusted: true
layerX: -566
layerY: 5
metaKey: false
movementX: 0
movementY: 0
offsetX: 22
offsetY: 13
pageX: 1198
pageY: 29
path: Array[13]
relatedTarget: null
returnValue: true
screenX: 1797
screenY: 148
shiftKey: false
sourceCapabilities: InputDeviceCapabilities
srcElement: span.mdl-button__ripple-container
target: span.mdl-button__ripple-container
timeStamp: 1458032708743
toElement: span.mdl-button__ripple-container
type: "click"
view: Window
webkitMovementX: 0
webkitMovementY: 0
which: 1
x: 1198
y: 29
¿Cómo puedo encontrar un id?
ACTUALIZACIÓN: Plunkers son todos buenos, pero en mi caso tengo localmente:
event.srcElement.attributes.id- indefinido
event.currentTarget.id- tiene el valor
Estoy usando Chrome última versión 49.0.2623.87 m
¿Podría ser una Material Design Litecosa? porque lo estoy usando.


id?idjunto con los parámetros.id?event.currentTarget.idRespuestas:
Si desea tener acceso al
idatributo del botón, puede aprovechar lasrcElementpropiedad del evento:Vea este plunkr: https://plnkr.co/edit/QGdou4?p=preview .
Vea esta pregunta:
fuente
event.srcElement.attributes.idno está definido no sé por qué ... pero encontré unidinevent.currentTarget.idcurrentTargetno está definido :-( ¿Qué navegador usas?angular2.dev.js:23597 TypeError: Cannot read property 'nodeValue' of undefinedvar target = event.srcElement.attributes.id || event.currentTarget.id;Para usuarios de TypeScript:
fuente
const elementId: string = (event.target as Element).id;Finalmente encontré la forma más sencilla:
fuente
<button ...><i class="fa fa-check"></i></button>y realmente hace clic en eseielemento, que es el componente FontAwasome, entonces event.target no es unbuttonsino elielemento.buttonuso del elementoevent.target.closest('button').Podría simplemente pasar un valor estático (o una variable de
*ngForo lo que sea)<button (click)="toggle(1)" class="someclass"> <button (click)="toggle(2)" class="someclass">fuente
iden tal caso?idsimplemente elija un índice de una matriz más o menos. A menudo es sorprendente que pasemos por alto las soluciones más sencillas con tanta frecuencia.No es necesario aprobar todo el evento (a menos que necesite otros aspectos del evento de los que ha indicado). De hecho, no se recomienda. Puede pasar la referencia del elemento con solo una pequeña modificación.
Demostración de StackBlitz
Técnicamente, no necesita encontrar el botón en el que se hizo clic, porque ha pasado el elemento real.
Guiado angular
fuente
Cuando tu
HTMLElementno tienes unid,nameoclasspara llamarluego usa
fuente
hazlo así simplemente: (como se dice en el comentario, aquí está con un ejemplo con dos métodos)
demostración: http://plnkr.co/edit/5kJaj9D13srJxmod213r?p=preview
fuente
event.srcElement.attributes.idno está definido en mi caso no sé por qué ... pero encontré unidinevent.currentTarget.ideventdespedido donde puede veridevent.target.idtambién puede tener el valor de identificación¡Puede usar su interfaz
HTMLButtonElementque hereda de su padreHTMLElement!De esta manera podrá tener autocompletado ...
Para ver toda la lista de HTMLElement de la documentación del World Wide Web Consortium (W3C)
Demostración de StackBlitz
fuente
Si desea tener acceso al
idatributo del botón en angular 6 siga este códigotu
iden el valor,el valor de
valueesmyId.fuente