首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ngIf不使用ng-template

ngIf不使用ng-template
EN

Stack Overflow用户
提问于 2017-11-16 20:29:53
回答 2查看 5.1K关注 0票数 2

我想在Angular 4中显示或隐藏一个基于布尔值的模板。

-这是在Home.Component.HTML内部

代码语言:javascript
复制
<ng-template [ngIf]="isSummaryViewVisbile" #pricebookView ></ng-template>

-这是在HomeComponent内部

代码语言:javascript
复制
   isSummaryViewVisbile: boolean = true;

上面的代码不起作用,它总是隐藏模板,尽管我赋值为true。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-11-17 00:30:01

ng-template是一个用于呈现HTML的角度元素。它永远不会直接显示。事实上,在渲染视图之前,Angular会用comment.If替换模板及其内容没有结构指令,您只需在ng-template中包装一些元素,这些元素就会消失。

代码语言:javascript
复制
<p>Hip!</p>
<ng-template>
  <p>Hip!</p> //would disappear
</ng-template>
<p>Hooray!</p>

因此,下面的代码可以很好地工作

代码语言:javascript
复制
isSummaryViewVisbile = true;

<ng-template [ngIf]="isSummaryViewVisbile" #pricebookView >
       Hello world.
</ng-template>

但是如果你用*ngIf替换ngIf,同样的代码将不能工作。

因为在内部,Angular会将*ngIf属性转换为一个ng-template元素,并将其封装在host元素周围。例如

代码语言:javascript
复制
<ng-template *ngIf="isSummaryViewVisbile" #pricebookView >
       Hello world.
</ng-template>

会被转换成-

代码语言:javascript
复制
<ng-template [ngIf]="isSummaryViewVisbile">
      <ng-template #pricebookView >
           Hello world.
    </ng-template>
</ng-template>

现在,正如我们所看到的,内部ng-template将总是隐藏它的内容,我希望这是清楚的。

演示:https://plnkr.co/edit/yB7PKx?p=preview

票数 9
EN

Stack Overflow用户

发布于 2021-08-08 15:35:59

根据Mohit的回答/评论,你的代码是有效的……如果要将内容分配给ng-template标记,它应该会显示出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47329706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档