Bisakah saya menggunakan ngIf
tanpa elemen kontainer tambahan?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Itu tidak berfungsi dalam tabel karena itu akan membuat HTML tidak valid.
Bisakah saya menggunakan ngIf
tanpa elemen kontainer tambahan?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Itu tidak berfungsi dalam tabel karena itu akan membuat HTML tidak valid.
Jawaban:
ng-container
lebih disukai daripada template
:
<ng-container *ngIf="expression">
Lihat:
Saya menemukan metode untuk itu di: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .
Anda cukup menggunakan <template>
tag dan menggantinya *ngIf
dengan [ngIf]
seperti ini.
<template [ngIf]="...">
...
</template>
template
tag, secara default prefiks angular directives dengan * membuat tag template. jadi keduanya sama[ngIf] and *ngIf
*ngIf
Anda memiliki elemen di dalam template, Anda tidak dapat menulisnya template
sendiri. Dalam keadaan tertentu, elemen tambahan dapat mengganggu.
template
tag di dalam, tr
/ td
tag?
*ngIf="foo"
setara dengan <template [ngIf]="foo">
tag pembungkus . Singkatnya, template
+ []
== *
, jadi []
! = *
. *
masuk akal dalam elemen apa pun kecuali template
.
Anda tidak dapat memasukkan div
langsung ke dalam tr
, itu akan membuat HTML tidak valid. tr
hanya dapat memiliki td
/ th
/ table
elemen di dalamnya & di dalamnya Anda dapat memiliki elemen HTML lainnya.
Anda bisa sedikit mengubah HTML Anda untuk memiliki *ngFor
lebih tbody
& memiliki ngIf
lebih tr
itu sendiri seperti di bawah ini.
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>