Czy mogę używać ngIfbez dodatkowego pojemnika?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Nie działa w tabeli, ponieważ spowodowałoby to nieprawidłowy kod HTML.
Czy mogę używać ngIfbez dodatkowego pojemnika?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Nie działa w tabeli, ponieważ spowodowałoby to nieprawidłowy kod HTML.
Odpowiedzi:
ng-containerjest preferowany nad template:
<ng-container *ngIf="expression">
Widzieć:
Znalazłem na to metodę na: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .
Możesz po prostu użyć <template>tagu i zastąpić go *ngIfw [ngIf]ten sposób.
<template [ngIf]="...">
...
</template>
templateznacznik, domyślnie przedrostek dyrektyw kątowych z * tworzy znacznik szablonu. więc oba są takie same[ngIf] and *ngIf
*ngIfmasz element wewnątrz szablonu, nie masz go, jeśli napiszesz templatesiebie. W pewnych okolicznościach dodatkowy element może przeszkadzać.
templatetag w środku, tr/ tdtag?
*ngIf="foo"jest równoważne z <template [ngIf]="foo">tagiem opakowującym . Krótko mówiąc, template+ []== *, więc []! = *. *ma sens w każdym elemencie z wyjątkiem template .
Nie możesz umieścić divbezpośrednio w środku tr, to spowodowałoby nieprawidłowy HTML. trmoże zawierać tylko element td/ th/ table, a wewnątrz nich możesz mieć inne elementy HTML.
Możesz nieznacznie zmienić kod HTML, aby mieć *ngFornad sobą tbodyi mieć ngIfnad trsobą, jak poniżej.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>