Ich habe ein solches Klickereignis
<button (click)="toggle($event)" class="someclass" id="btn1"></button>
<button (click)="toggle($event)" class="someclass" id="btn2"></button>
Ich fange das Ereignis in meinem Funktionseingabeparameter ab und möchte herausfinden, auf welche Schaltfläche genau geklickt wurde.
toggle(event) {
}
hat aber event
keine id
Eigenschaft.
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
Wie finde ich eine id
?
UPDATE: Plunker sind alle gut, aber in meinem Fall habe ich vor Ort:
event.srcElement.attributes.id
- undefiniert
event.currentTarget.id
- hat den Wert
Ich verwende Chrome neueste Version 49.0.2623.87 m
Könnte es Material Design Lite
etwas sein? weil ich es benutze.
id
?id
Übergeben Sie einfach die statische / dynamische zusammen mit den Parametern.id
?event.currentTarget.id
Antworten:
Wenn Sie Zugriff auf das
id
Attribut der Schaltfläche haben möchten, können Sie diesrcElement
Eigenschaft des Ereignisses nutzen:Siehe dieses Plunkr: https://plnkr.co/edit/QGdou4?p=preview .
Siehe diese Frage:
quelle
event.srcElement.attributes.id
ist undefiniert weiß nicht warum ... aber ich fand einenid
inevent.currentTarget.id
currentTarget
ist es undefiniert :-( Welchen Browser verwenden Sie?angular2.dev.js:23597 TypeError: Cannot read property 'nodeValue' of undefined
var target = event.srcElement.attributes.id || event.currentTarget.id;
Für TypeScript-Benutzer:
quelle
const elementId: string = (event.target as Element).id;
Endlich den einfachsten Weg gefunden:
quelle
<button ...><i class="fa fa-check"></i></button>
und Sie tatsächlich auf dasi
Element klicken , bei dem es sich um die FontAwasome-Komponente handelt, ist event.target kein Element,button
sondern dasi
Element.button
Element zu erhalten, verwenden Sieevent.target.closest('button')
.Sie können einfach einen statischen Wert (oder eine Variable von
*ngFor
oder was auch immer) übergeben.<button (click)="toggle(1)" class="someclass"> <button (click)="toggle(2)" class="someclass">
quelle
id
solchen Fall die Verwendung eines zu vermeiden ?id
nur einen Index aus einem Array oder so auszuwählen. Es ist oft überraschend, dass wir so häufig die einfachsten Lösungen übersehen.Es ist nicht erforderlich, die gesamte Veranstaltung zu bestehen (es sei denn, Sie benötigen andere Aspekte der Veranstaltung als angegeben). In der Tat wird es nicht empfohlen. Sie können die Elementreferenz mit nur einer kleinen Änderung übergeben.
StackBlitz Demo
Technisch gesehen müssen Sie die Schaltfläche, auf die geklickt wurde, nicht finden, da Sie das eigentliche Element übergeben haben.
Winkelführung
quelle
Wenn Ihr
HTMLElement
nicht ein habenid
,name
oderclass
auf Abruf,dann benutze
quelle
Mach das einfach so: (wie im Kommentar hier mit Beispiel mit zwei Methoden gesagt)
Demo: http://plnkr.co/edit/5kJaj9D13srJxmod213r?p=preview
quelle
event.srcElement.attributes.id
ist in meinem Fall undefiniert, weiß nicht warum ... aber ich fand einenid
inevent.currentTarget.id
event
gefeuert, wo Sie sehen könnenid
event.target.id
es kann auch den ID-Wert habenSie können seine Schnittstelle verwenden
HTMLButtonElement
, die von seinem übergeordneten erbtHTMLElement
!Auf diese Weise können Sie die automatische Vervollständigung durchführen ...
Alle Listen von HTMLElement aus der Dokumentation des World Wide Web Consortium (W3C) anzeigen
StackBlitz Demo
quelle
Wenn Sie Zugriff auf das
id
Attribut der Schaltfläche in Winkel 6 haben möchten, befolgen Sie diesen CodeIhr
id
im Wert,der Wert von
value
istmyId
.quelle