Kann ich ngIf
ohne zusätzliches Containerelement verwenden?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
In einer Tabelle funktioniert dies nicht, da dies zu ungültigem HTML führen würde.
Kann ich ngIf
ohne zusätzliches Containerelement verwenden?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
In einer Tabelle funktioniert dies nicht, da dies zu ungültigem HTML führen würde.
Antworten:
ng-container
wird bevorzugt gegenüber template
:
<ng-container *ngIf="expression">
Sehen:
Ich habe eine Methode dafür gefunden: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .
Sie können einfach die Verwendung <template>
Tag und ersetzen *ngIf
mit [ngIf]
so.
<template [ngIf]="...">
...
</template>
template
Tag, standardmäßig erstellt das Präfix eckige Direktiven mit * ein Vorlagen-Tag. also sind beide gleich[ngIf] and *ngIf
*ngIf
Sie ein Element in der Vorlage haben, brauchen Sie nicht , wenn Sie das schreiben template
selbst. Unter bestimmten Umständen kann das zusätzliche Element stören.
template
tag in tr
/ td
tag einfügen?
*ngIf="foo"
dem Wrapping- <template [ngIf]="foo">
Tag entspricht. Kurz gesagt, template
+ []
== *
, also []
! = *
. *
macht in jedem Element außer Sinn template
.
Sie können nicht div
direkt hineinstecken tr
, das würde ungültiges HTML machen. tr
kann nur td
/ th
/ table
element enthalten & in ihnen könnten andere HTML-Elemente sein.
Sie könnten leicht Ihren HTML ändern müssen *ngFor
über tbody
& haben ngIf
über tr
sich unten mögen.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>