2017-11-18 2 views
0

Ich habe dieses HTML-Element auf meiner Anwendung:

.html

<a (click)="onOpen($event)"> 
    <i class="fa fa-file-text-o"></i> 
    <p>Profile</p> 
</a> 

.ts

onOpen(event):void { 
    console.log(event.target); 
} 

Wenn ich auf auf dem Element bekomme ich unterschiedliche Ergebnisse für event.target innerhalb der Funktion onOpen() dep Auf die Position klicken, auf die ich klicke.

Zum Beispiel, wenn ich auf das Element, wo gibt es den p Text, klicken, wird das Ziel das Element anstelle des Elements a sein.

Gibt es eine Möglichkeit, dass es immer das Element ist, das die Klickfunktion hat?

+0

https://stackoverflow.com/questions/46987482/angular-anchor-tag-clicked-element-id-not-showing/46987777#46987777 – yurzui

Antwort

2

Verwenden event.currentTarget das Element erhalten die Zuhörer

1

event.currentTarget gebunden ist ist das, was Sie suchen

onOpen(event:Event):void { 
    console.log(event.currentTarget); 
} 
0

Angular Rückkehr das wahre Ziel, weil Sie tatsächlich die p klicken nicht a .Die enthält a mit hundert Prozent Breite zu decken.

Eine Möglichkeit, es zu lösen, verwenden Sie $event.currentTarget, um Ursprungsziel zu erhalten.

0

Sie könnten einen String oder ein Objekt in dem (Klick) passieren und spielen, um mit, dass stattdessen versuchen, den DOM

Zum Beispiel zu manipulieren:

im .html onOpen($event, 'profile') oder onOpen($event, menu.profile)

in die .ts Datei

public menu: = { profile: {name: 'Profile', url: '....', icon: 'sample.svg', isActive: true }, home: {...} }

versuchen Sie, ein hinzufügen aktive Klasse im Menüpunkt oder was genau willst du erreichen?

EDIT:

<a (click)="onOpen($event, menu.profile)" [class.active]="menu.profile.isActive === true"> <i class="fa fa-file-text-o"></i> <p>Profile</p> </a>

+0

Dieses für andere ist Dinge. Ich brauche wirklich das dom-Element, um einige Berechnungen durchzuführen und den Stil anderer zu ändern (Eltern-Kind-Elemente). Wenn es nur für Klassen wäre, könnte ich routerLinkActive verwenden, um das Element zu aktivieren. – celsomtrindade

Verwandte Themen