Angular2在IE中显示为null

时间:2017-02-28 01:59:14

标签: angular

我在Angular2组件中有以下内容:

<div ng-if="heading" [innerHTML]="heading"></div>

Chrome&amp; Safari工作正常 - 但IE在DIV中显示null。我不明白为什么......标题是undefined,经过双重检查!

4 个答案:

答案 0 :(得分:5)

Angular2中的正确语法应为

<div *ngIf="heading" [innerHTML]="heading"></div>

答案 1 :(得分:5)

对于那些不想在内部HTML可能未定义的情况下必须执行ngIf的人,这里有一个解决方案可以在您的应用中解决此问题:

constructor(sanitize: DomSanitizer) {
    // override the sanitize method so that it returns an empty string instead of null so that IE doesn't show "null" in the DOM
    sanitize.sanitize = function(context: SecurityContext, value: SafeValue | string | null) {
        return (sanitize as any).__proto__.sanitize.call((sanitize as any), context, value) || '';
    };
}

我把它放在app.module构造函数中。

您可能会问,&#34;为什么会采用这种hacky方式?&#34;这主要是因为DomSanitizer是一个充当类的接口。真正的清理工作发生在未公开暴露的DomSanitizerImpl类中。

答案 2 :(得分:0)

*ngIf

<div *ngIf="heading" [innerHTML]="heading"></div>

答案 3 :(得分:0)

Angular2 NgIf语法:

<div *ngIf="condition">...</div>
<div template="ngIf condition">...</div>
<template [ngIf]="condition"><div>...</div></template>

示例:

<div *ngIf="errorCount > 0" class="error">
  <!-- Error message displayed when the errorCount property in the current context is greater than 0. -->
  {{errorCount}} errors detected
</div>