web-dev-qa-db-ja.com

Angular 2に余分な要素なしでngIfを使用する

追加のコンテナ要素なしでngIfを使用できますか?

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

無効なHTMLが作成されるため、テーブルでは機能しません。

85
janispritzkau

ng-containertemplateよりも優先されます:

<ng-container *ngIf="expression">

見る:

Angular 2 ng-container

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

131

そのためのメソッドを見つけました: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template

単純に<template>タグを使用して、*ngIf[ngIf]に置き換えることができます。

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

divtrの中に直接配置することはできません。これは無効なHTMLになります。 trにはtd/th/table要素のみを含めることができ、その中には他のHTML要素を含めることができます。

*ngFor over tbodyを持つようにHTMLをわずかに変更し、以下のようにngIf over tr自体を持つようにすることができます。

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