ฉันสามารถใช้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
tag ไว้ข้างใน, tr
/ td
tag ได้ไหม?
*ngIf="foo"
เทียบเท่ากับ<template [ngIf]="foo">
แท็กการห่อ ในระยะสั้นtemplate
+ []
== *
ดังนั้น[]
! = *
. *
ทำให้ความรู้สึกในองค์ประกอบใด ๆยกเว้น template
คุณไม่สามารถใส่div
เข้าไปข้างในได้โดยตรงtr
ซึ่งจะทำให้ HTML ไม่ถูกต้อง tr
สามารถมีtd
/ th
/ table
องค์ประกอบในนั้นและภายในคุณสามารถมีองค์ประกอบ HTML อื่น ๆ ได้
คุณสามารถเปลี่ยน HTML ของคุณเล็กน้อยเพื่อให้มี*ngFor
over tbody
& have ngIf
over tr
เองเหมือนด้านล่าง
<tbody *ngFor="...">
<tr *ngIf="...">
...
</tr>
<tr *ngIf="!...">
...
</tr>
..
</tbody>