Могу ли я использовать 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] 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
сам как показано ниже.источник