2017-12-07 3 views
0

Ich habe ein Szenario, wo ich eine HTML-Zeichenfolge aus dem Back-End bekomme und ich Rendern diese Zeichenfolge in HTML mit [innerHTML]. Ich habe String Link zu diesemAngular 2 - Wie fügt man ein Ereignis an ein dynamisch hinzugefügtes HTML-Element an?

Please click on <a (click)='openMyFunction()' open dialog </a>

ich in der Lage bin die Zeichenfolge mit Hilfe von Winkeln sanitize Rohr gemacht zu bekommen, aber die Klick-Funktion funktioniert nicht.

Ich weiß wie dynamisch hinzugefügt das Klickereignis nicht ausgelöst wird. Kann mir jemand ein kleines Beispiel geben, wo ich diesen Klick überhaupt funktionieren lassen kann?

Antwort

0

Wenn Sie das neue DOM-Element durch seine ID oder seine Klassennamen bekommen können, können Sie das Ereignis mit element.addEventListener zuweisen:

this.container.nativeElement.innerHTML = "<a class='mylink'>Click to show message</a>"; 

let children = document.getElementsByClassName("mylink"); 

for (let i = 0; i < children.length; i++) { 
    children[i].addEventListener("click", (event: Event) => { 
     alert("Hello world!"); 
    }); 
} 

Sie ein Beispiel in this plunker sehen kann.

+0

Das ist aber nicht das eckige '(click)' Ereignis. –

+0

@ConnonrsFan, ja, das ist korrekt, aber sein Beispiel zeigt '(click)', also nehme ich an, dass er den eckigen Event-Handler, der auch die Change-Erkennung kümmert, will. –

+0

@SonuKapoor - Entschuldigung, ich hatte meinen Kommentar entfernt, bevor Sie eine Antwort darauf gepostet haben. Um ehrlich zu sein, ich weiß nicht, wie sich das '(click)' 'Ereignis auf die Änderungserkennung bezieht. Ich sehe diesen Mechanismus hauptsächlich für die Bindung von Eigenschaften. Änderungen, die im oben gezeigten Event-Handler vorgenommen wurden, werden von Angular erkannt. – ConnorsFan

Verwandte Themen