【发布时间】:2019-12-12 05:02:27
【问题描述】:
我想动态创建一个按钮。我使用 innerHtml 来执行此操作。 我可以创建按钮。但它的点击事件不起作用。 请告诉我如何解决这个问题?
这是我的html代码
<div [innerHTML]="answerPanelContent"></div>
这是我的打字稿代码
answerPanelContent: any;
constructor(private sanitizer: DomSanitizer){
}
ngOnInit() {
this.answerPanelContent = this.sanitizer.bypassSecurityTrustHtml(`<button type="button" class="btn btn-primary float-left"
(click)="removeAnswer()" title="Remove Answer"
aria-label="Close">
Remove</button>`);
}
removeAnswer(){
alert('clicked');
}
这里是 stackblitz 网址:https://stackblitz.com/edit/angular-nka4w9
【问题讨论】:
-
这是因为它不会是角度控制的组件,只是说明未消毒的html。
-
如果我将其指定为未消毒,则按钮不显示
-
正确的做法是将 HTML 放在模板中,而不是放在 TypeScript 代码中。在模板中的按钮上使用
*ngIf="buttonShown",并在TS代码中设置this.buttonShown为true使其出现。 -
@JB Nizet,我做不到,我创建这个问题只知道如何动态执行此操作。实际上我想要的是,我有一个带按钮的输入字段。如果我输入一些东西,点击那个按钮后,我必须用一个按钮显示那个输入值。那个按钮在那个字段必须关闭后点击。这是完整的问题stackoverflow.com/questions/57345041/…
-
这不会改变任何事情。将 HTML 代码放入模板中,根据组件的状态使用 ngIf 将其移除或添加到页面中。或 ngFor 为数据数组的每个元素生成一行。
标签: angular typescript angular8