Чи можна використовувати 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
тег?
*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>