【问题标题】:Ng-Template not rendering my HTML contentNg-Template 没有呈现我的 HTML 内容
【发布时间】:2021-11-11 08:48:59
【问题描述】:

我正在创建一个简单的应用程序来使用 observables 测试一些东西,由于某种原因,当我使用 ng-template 标记包装该代码时,HTML 根本不显示。

我在 div 之前使用这个 ng-template 的原因是使用 *ngIf。最初,我认为 *ngIf 是问题所在,但是当我从模板中删除该语句时,它仍然不起作用。所以如果不是问题。

有什么想法吗?

<!-- If I remove the <ng-template> tag, the HTML is rendered, but with it, it doesn't work -->
<ng-template>
    <div class="messages-container" *ngIf="(messagesService.errors$ | async) as errors">
        <div class="messages" *ngFor="let error of errors">{{error}}</div>
        <mat-icon class="close" (click)="onClose()">close</mat-icon>
    </div>
</ng-template>

编辑: 当我使用 [ngIf] 而不是 *ngIf 时,它可以工作,但我仍然不明白为什么 [ngIf] 可以工作,以及为什么它不能在没有条件的情况下工作。

【问题讨论】:

    标签: angular


    【解决方案1】:

    结构指令中的星号语法,如*ngIf 隐式地从使用该指令的元素创建模板。无需显式写&lt;ng-temlate&gt; 只需使用*ngIf

    【讨论】:

    • 你能举个例子吗?
    • 只需从您的代码中删除 ,它应该可以正常工作
    • 但这就是重点,为什么我不能使用带有 start 语法或没有任何结构指令的
    • 如果我将其更改为 工作正常
    • 因为使用 您正在创建一个如何创建一段 html 的规则,然后您可以在某处呈现。但你没有在任何地方渲染它。如果将 [ngIf] 指令添加到 元素,则该指令执行渲染此模板 1 次的逻辑。如果你在这个模板上使用 [ngForOf]... 那么它将被渲染多次
    猜你喜欢
    • 2017-09-04
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2013-11-29
    相关资源
    最近更新 更多