Могу ли я использовать 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
/ td
tag?
*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>