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