Maison > Questions et réponses > le corps du texte
P粉5510842952023-08-18 09:45:50
Il est important de considérer la portée et le contexte des fonctions liées.
Dans votre cas, la fonction testFunc est définie dans votre composant Angular, mais elle est appelée à partir de l'attribut onclick en ligne dans la chaîne HTML générée. Cela peut entraîner des problèmes de portée et de contexte.
Afin de lier correctement les événements et les fonctions dans du HTML généré dynamiquement dans Angular, vous devez utiliser le mécanisme de liaison d'événements d'Angular.
Mettez à jour votre fonction returnButtonGroup pour renvoyer le code du modèle angulaire au lieu de la chaîne HTML brute. Utilisez la liaison d'événement (clic) d'Angular pour lier la fonction testFunc.
returnButtonGroup(key: string): string { return `<i (click)="testFunc('${key}')" class="fa fa-wrench"></i>`; }
Utilisé en HTML
<div [innerHTML]="dynamicHtml"></div>
Dans votre composant.ts, créez une propriété pour contenir le code HTML généré dynamiquement et assurez-vous que la fonction testFunc est accessible dans le composant.
dynamicHtml: string; constructor() { this.dynamicHtml = this.returnButtonGroup('someKey'); // 使用适当的键调用你的方法 } testFunc(key: string) { console.log(key); }