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 event
no tiene id
propiedad.
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 Lite
cosa? porque lo estoy usando.
id
?id
junto con los parámetros.id
?event.currentTarget.id
Respuestas:
Si desea tener acceso al
id
atributo del botón, puede aprovechar lasrcElement
propiedad del evento:Vea este plunkr: https://plnkr.co/edit/QGdou4?p=preview .
Vea esta pregunta:
fuente
event.srcElement.attributes.id
no está definido no sé por qué ... pero encontré unid
inevent.currentTarget.id
currentTarget
no está definido :-( ¿Qué navegador usas?angular2.dev.js:23597 TypeError: Cannot read property 'nodeValue' of undefined
var 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 esei
elemento, que es el componente FontAwasome, entonces event.target no es unbutton
sino eli
elemento.button
uso del elementoevent.target.closest('button')
.Podría simplemente pasar un valor estático (o una variable de
*ngFor
o lo que sea)<button (click)="toggle(1)" class="someclass"> <button (click)="toggle(2)" class="someclass">
fuente
id
en tal caso?id
simplemente 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
HTMLElement
no tienes unid
,name
oclass
para 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.id
no está definido en mi caso no sé por qué ... pero encontré unid
inevent.currentTarget.id
event
despedido donde puede verid
event.target.id
también puede tener el valor de identificación¡Puede usar su interfaz
HTMLButtonElement
que 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
id
atributo del botón en angular 6 siga este códigotu
id
en el valor,el valor de
value
esmyId
.fuente