Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

228
Visualizações
How to get reference to a button in template that is ng-repeated to make it editable in angular2/4?

I have the following javascript and html that allows me to click a button to edit text, how do I make it so that it works with angular2 if there are multiple buttons?

<button>Button Text Could Be Editable</button><br />
<button (click)="modifyText()" data-edit="0">Edit Button Above</button>

<script>
function modifyText() {
this.previousElementSibling.previousElementSibling.contentEditable = !!(+(this.dataset.edit = this.dataset.edit == 0 ? 1 : 0))
}
</script>

In angular2, I have a list of students in my scope that I want to be rendered on a button, but I can "Edit" their name on the button only if I click on the specific button.

// this is part of the component
this.students = ['John', 'Jacob', 'Patty'];

// this is the html in my template for the component
<button *ngFor="name of students" (click) = "modifyText()">{{name}}</button><br />

How do I modify modifyText() function within the component so that in angular2, I can get a reference to the specific button and make it editable just like in my non-angular example for a single button?

Am looking for a response using the latest version of Angular as I know this has changed a couple of times.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

You can get a reference to the HTML element that was clicked by using the $event object. Most of the guides tell you to use the target property of the event object but I like to use currentTarget because:

It always refers to the element to which the event handler has been attached, as opposed to event.target which identifies the element on which the event occurred.

This guarantees that I will get the correct reference to the HTML element that I am listening for the click on. In the template pass in the current HTML element as a parameter like so:

<button *ngFor="name of students"
        (click)="modifyText($event.currentTarget)">{{name}}</button>

and then recieve it in the component like so:

public modifyText(htmlElement: HTMLElement) {
    this.dataset.edit = !this.dataset.edit;
    htmlElement.contentEditable = this.dataset.edit;
    htmlElement.focus();
}
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda