Der Unterschied ist, dass beide in Angular2 nicht unterstützt werden ;-) zumindest in aktuellen Versionen - es sollte *ngIf
oder ngIf
sein.
Strukturelle Direktiven können mit expliziten <template>
Tags oder implizit <template>
Tags verwendet werden. Für die implizite Version ist eine *
erforderlich, um anzuzeigen, dass es sich um eine strukturelle Richtlinie handelt.
explizite
<template [ngIf]="someExpr">
<div>content</div>
</template>
oder seit 2.0.0 bevorzugt
<ng-container *ngIf="someExpr">
<div>content</div>
</ng-container>
implizite
<div *ngIf="someExpr"></div>
der Regel werden Sie die implizite Version zu verwenden, da es prägnanter ist.
Wann die explizite Version verwenden?
Es gibt Anwendungsfälle, in denen die implizite Version nicht funktioniert.
- Wenn Sie mehr als eine Strukturrichtlinie wie
ngFor
undngIf
anwenden möchten, die nicht unterstützt wird, dann können Sie die explizite Form für eine diese verwenden.
Anstelle dieser ungültige Syntax
<div *ngFor="let item of items" *ngIf="!item.hidden"></div>
Sie
<ng-container *ngFor="let item of items">
<div *ngIf="!itemHidden></div>
</ng-container>
- verwenden Wenn Sie die Strukturrichtlinie zu mehr als einem Element
anwenden möchten Für Beispiel möchten Sie mehrere Artikel auflisten w mit name
und price
pro Reihe
<tr>
<td *ngFor="???">item.name</td>
<td>item.price</td>
</tr>
<tr>
<ng-container *ngFor="let item of items">
<td>item.name</td>
<td>item.price</td>
</ng-container>
</tr>