Angular2 использовать ngIf без дополнительного элемента


могу ли я использовать ngIf без дополнительного элемента контейнера?

<tr *ngFor="...">
  <div *ngIf="...">
    ...
  </div>
  <div *ngIf="!...">
    ...
  </div>
  ..
</tr>

он не работает с таблицей, когда я добавляю divs.

3 64

3 ответа:

ng-container предпочтительнее, чем template:

<ng-container *ngIf="expression">

посмотреть:

угловой 2 нг-контейнер

https://github.com/angular/angular.io/issues/2303

Я нашел способ для этого: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template.

вы можете просто использовать <template> тег и заменить *ngIf С [ngIf] такой.

<template [ngIf]="...">
  ...
</template>

вы не можете поставить div внутри tr, что бы сделать недопустимый HTML. tr может быть только td/th/table элемент в нем и внутри них вы могли бы иметь другие элементы HTML.

вы можете немного изменить свой HTML, чтобы иметь *ngFor over tbody и ngIf over tr сама как ниже.

<tbody *ngFor="...">
  <tr *ngIf="...">
    ...
  </tr>
  <tr  *ngIf="!...">
    ...
  </tr>
  ..
</tbody>