Могу ли я использовать ngIfбез дополнительного элемента контейнера?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Это не работает в таблице, потому что это сделает HTML недействительным.
Могу ли я использовать ngIfбез дополнительного элемента контейнера?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Это не работает в таблице, потому что это сделает HTML недействительным.
Ответы:
ng-containerпредпочтительнее template:
<ng-container *ngIf="expression">
Видеть:
Я нашел для этого метод: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .
Вы можете просто использовать <template>тег и заменить *ngIfс , [ngIf]как это.
<template [ngIf]="...">
...
</template>
templateтег, по умолчанию угловые директивы с префиксом * создают тег шаблона. так что оба одинаковы[ngIf] and *ngIf
*ngIfвас есть элемент внутри шаблона, которого нет, если вы templateсами пишете . При определенных обстоятельствах дополнительный элемент может мешать.
templateтег внутрь, tr/ tdtag?
*ngIf="foo"эквивалентно <template [ngIf]="foo">тегу упаковки . Короче template+ []== *, значит []! = *. *имеет смысл в любом элементе, кроме template .
Вы не можете вставить divпрямо внутрь tr, это сделало бы HTML недействительным. trв нем может быть только элемент td/ th/, tableа внутри него могут быть другие элементы HTML.
Вы можете немного изменить HTML , чтобы иметь *ngForболее tbodyи иметь ngIfболее trсам как показано ниже.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>