我希望将从服务器检索到的HTML插入到angular2中的DOM元素中。我似乎无法找出最佳/正确的方法来完成这个操作。
我不能简单地将{{my_data}}放入模板中,因为angular 2会自动转义HTML。
我尝试编写了一个不安全的html指令,该指令直接将值分配给元素的innerHTML:
/// <reference path="../../typings/typings.d.ts" />
import {Directive} from 'angular2/angular2';
import {ElementRef} from 'angular2/core';
@Directive({
selector: "[html-unsafe]",
properties: ['htmlUnsafe']
})
export class HtmlUnsafe{
constructor(private elem: ElementRef){
}
set htmlUnsafe(value){
setTimeout(() => {
this.elem.nativeElement.innerHTML = value;
},0);
}
}
那么现在我的模板中大概会有这样的内容:
<td [html-unsafe]="my_data"></td>
这样做是有效的,但我不确定这是否是正确的方法,而且setTimeout似乎是一个奇怪的解决方法。如果没有setTimeout,this.elem.nativeElement
似乎并不实际指向DOM元素,而是指向某种临时元素。
是否有更“正确”的angular2方法来简单地插入HTML到DOM中?为什么需要将DOM操作包装在setTimeout中?
[innerHTML]
。 - R891