【发布时间】:2018-07-11 10:19:59
【问题描述】:
我正在通过更新元素的innerHTML 来加载一些 HTML 内容(在 api 调用之后加载一些内容)。除了从加载的内容中删除id 属性的一件事之外,一切正常。
组件代码:
content: string;
@ViewChild('div') divContainer: ElementRef;
constructor(private cd: ChangeDetectorRef) {
// actually hee loading content using some api call
setTimeout(() => {
this.content = "<a href='#' id='cafeteria' class='cafeteria'>Cafeteria</a>";
this.cd.detectChanges();
this.divContainer.nativeElement.querySelector('#cafeteria').addEventListener('click', (e) => {
e.preventDefault();
console.log('clicked');
});
}, 1000);
}
模板:
<div #div [innerHTML]="content"></div>
在 Chrome 控制台中检查时:
在上面的代码中,this.divContaainer.nativeElement.querySelector('#cafeteria') 返回 null,因为 id 丢失了,当我用 calss 选择器替换它时它的工作。
id 属性缺失,class 属性存在,有什么具体原因吗?
【问题讨论】:
-
你能用
safeHtml管道和.sanitized.bypassSecurityTrustHtml试试吗 -
@AswinRamesh:让我试试
-
@AswinRamesh :使用
DomSanitizer... -
@AswinRamesh :类似这样的
this.content = sanitizer.bypassSecurityTrustHtml("<a href='#' id='cafeteria' class='cafeteria'>Cafeteria</a>");
标签: javascript angular typescript dom