ng-templateは、HTMLをレンダリングするためのAngular要素です。直接表示されることはありません。実際、ビューをレンダリングする前に、Angularはその内容をコメントで置き換えます。構造指示がなく、ng-templateにいくつかの要素をラップするだけで、これらの要素は消えます。
<p>Hip!</p>
<ng-template>
<p>Hip!</p> //would disappear
</ng-template>
<p>Hooray!</p>
したがって、次のコードは、
isSummaryViewVisbile = true;
<ng-template [ngIf]="isSummaryViewVisbile" #pricebookView >
Hello world.
</ng-template>
正常に動作します。しかし、あなたが*で[ngIf]交換した場合ngIfは、同じコードが動作しないでしょう。
内部的に、Angularは* ngIf属性をホスト要素にラップされたng-template要素に変換します。例えば
<ng-template *ngIf="isSummaryViewVisbile" #pricebookView >
Hello world.
</ng-template>
が
<ng-template [ngIf]="isSummaryViewVisbile">
<ng-template #pricebookView >
Hello world.
</ng-template>
</ng-template>
ツー変換されます今、私たちは、内側NG-テンプレートを見ることができるように、常にそれが、これは明確に願っていますcontent.Iだ非表示になります。
デモ:https://plnkr.co/edit/yB7PKx?p=preview
あなたは、 'isSummaryViewVisbile'を持っている一つまたは他が' isSummaryViewVisible'(「見える」が正しいスペルに気づく) – PierreDuc
ごめんなさい名前が付いていない、スペルが間違っているあなたは確かであるが、両方のファイルで同じです。 –
なぜこの目的のために導入された ' 'を使用していませんか? –