Eu tenho esse evento de clique
<button (click)="toggle($event)" class="someclass" id="btn1"></button>
<button (click)="toggle($event)" class="someclass" id="btn2"></button>
Estou capturando o evento em meu parâmetro de entrada de função e quero saber exatamente qual botão foi clicado.
toggle(event) {
}
mas event
não tem uma id
propriedade.
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
Como posso encontrar um id
?
ATUALIZAÇÃO: Plunkers são todos bons, mas no meu caso tenho localmente:
event.srcElement.attributes.id
- undefined
event.currentTarget.id
- tem o valor
Estou usando a versão mais recente do Chrome 49.0.2623.87 m
Pode ser Material Design Lite
coisa? porque estou usando.
id
?id
junto com os parâmetros.id
?event.currentTarget.id
Respostas:
Se você deseja ter acesso ao
id
atributo do botão, pode aproveitar asrcElement
propriedade do evento:Veja este plunkr: https://plnkr.co/edit/QGdou4?p=preview .
Veja esta pergunta:
fonte
event.srcElement.attributes.id
é indefinido não sei porque ... mas eu encontrei umid
inevent.currentTarget.id
currentTarget
é indefinido :-( Qual navegador você usa?angular2.dev.js:23597 TypeError: Cannot read property 'nodeValue' of undefined
var target = event.srcElement.attributes.id || event.currentTarget.id;
Para usuários TypeScript:
fonte
const elementId: string = (event.target as Element).id;
Finalmente encontrei a maneira mais simples:
fonte
<button ...><i class="fa fa-check"></i></button>
e você realmente clicar nessei
elemento, que é o componente FontAwasome, então o event.target não é um,button
mas oi
elemento.button
uso do elementoevent.target.closest('button')
.Você poderia simplesmente passar um valor estático (ou uma variável de
*ngFor
ou qualquer outro)<button (click)="toggle(1)" class="someclass"> <button (click)="toggle(2)" class="someclass">
fonte
id
nesse caso?id
basta escolher um índice de uma matriz ou algo assim. Muitas vezes é surpreendente que negligenciemos as soluções mais simples com tanta frequência.Não há necessidade de ser aprovado em todo o evento (a menos que você precise de outros aspectos do evento que não os declarados). Na verdade, não é recomendado. Você pode passar a referência do elemento com apenas uma pequena modificação.
Demonstração StackBlitz
Tecnicamente, você não precisa encontrar o botão que foi clicado, porque você passou o elemento real.
Orientação angular
fonte
Quando você
HTMLElement
não tem umid
,name
ouclass
para ligar,então use
fonte
faça assim simplesmente: (como dito no comentário aqui é um exemplo com dois métodos)
demonstração: http://plnkr.co/edit/5kJaj9D13srJxmod213r?p=preview
fonte
event.srcElement.attributes.id
é indefinido no meu caso não sei porque ... mas eu encontrei umid
inevent.currentTarget.id
event
fogo onde você pode verid
event.target.id
ele também pode ter o valor idVocê pode usar sua interface
HTMLButtonElement
que herda de seu paiHTMLElement
!Desta forma, você poderá ter o preenchimento automático ...
Para ver toda a lista de HTMLElement da documentação do World Wide Web Consortium (W3C)
Demonstração StackBlitz
fonte
Se você deseja ter acesso ao
id
atributo do botão no angular 6 siga este códigovocê está
id
no valor,o valor de
value
émyId
.fonte