Rat*_*bey 2 angular-components angular
我想基于Angular 4中的布尔值显示或隐藏模板.下面是HTML和代码
---这是在Home.Component.HTML中
<ng-template [ngIf]="isSummaryViewVisbile" #pricebookView ></ng-template>
Run Code Online (Sandbox Code Playgroud)
----这是在HomeComponent中
isSummaryViewVisbile: boolean = true;
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用,它总是隐藏模板,虽然我指的是真的.
提前致谢.
ng-template是用于呈现HTML的Angular元素.它永远不会直接显示.事实上,渲染视图之前,角取代了其与comment.If内容不存在结构性的指令,你只是包裹在NG-模板中的一些元素,这些元素消失.
<p>Hip!</p>
<ng-template>
<p>Hip!</p> //would disappear
</ng-template>
<p>Hooray!</p>
Run Code Online (Sandbox Code Playgroud)
所以下面的代码可以正常工作
isSummaryViewVisbile = true;
<ng-template [ngIf]="isSummaryViewVisbile" #pricebookView >
Hello world.
</ng-template>
Run Code Online (Sandbox Code Playgroud)
但是如果用*ngIf替换[ngIf],相同的代码将无效.
因为在内部,Angular将*ngIf属性转换为包含主机元素的ng-template元素.例如
<ng-template *ngIf="isSummaryViewVisbile" #pricebookView >
Hello world.
</ng-template>
Run Code Online (Sandbox Code Playgroud)
将转换为 -
<ng-template [ngIf]="isSummaryViewVisbile">
<ng-template #pricebookView >
Hello world.
</ng-template>
</ng-template>
Run Code Online (Sandbox Code Playgroud)
现在我们可以看到内部ng-template将始终隐藏它的内容.我希望这清楚.
演示:https://plnkr.co/edit/yB7PKx?p = preview
| 归档时间: |
|
| 查看次数: |
1990 次 |
| 最近记录: |