javascript - 使用 angular2 将 HTML 从服务器插入 DOM(Angular2 中的一般 DOM 操作)

标签 javascript angular dom typescript

<分区>

我想将从服务器检索到的一些 HTML 插入到 angular2 中的 DOM 元素中。我似乎无法找出执行此操作的最佳/正确方法。

我不能只将 {{my_data}} 放入模板中,因为 Angular 2 会自动转义 HTML。

我试图编写一个 html-unsafe 指令,它只是直接为元素的 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 中?

最佳答案

阅读本文http://www.beyondjava.net/blog/angularjs-2-0-sneak-preview-data-binding/从 2014 年 11 月开始。

ng-bind-html 变成 [innerHTML]。

你可以试试这个。

关于javascript - 使用 angular2 将 HTML 从服务器插入 DOM(Angular2 中的一般 DOM 操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31146472/

相关文章:

javascript - 将 json 文件加载到 Localstorage

javascript - 在原型(prototype)函数中访问原型(prototype)函数

JavaScript:监听特定标签上的 DOM 更改而不进行轮询

javascript - 为什么 $(document).ready() 的位置很重要?

javascript - 如何为 KnockoutJS 中的单击事件维护引用正确的执行上下文?

javascript - twitter-bootstrap-wizard 错误切换步骤只需滚动

Angular 可观察到的错误不会使用 ChangeDetectionStrategy.OnPush 刷新界面

css - 如何使用 Chrome Workspaces 保存使用 Angular2 + webpack 在本地更改的 CSS?

angular cli 6,ng测试不起作用

Java编辑xml文件(保存属性顺序)