Czy mogę używać ngIf
bez dodatkowego pojemnika?
<tr *ngFor="...">
<div *ngIf="...">
...
</div>
<div *ngIf="!...">
...
</div>
</tr>
Nie działa w tabeli, ponieważ spowodowałoby to nieprawidłowy kod HTML.
ng-container
jest preferowany nad template
:
<ng-container *ngIf="expression">
Widzieć:
Znalazłem na to metodę na: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .
Możesz po prostu użyć
<template>
tagu i zastąpić go*ngIf
w[ngIf]
ten sposób.źródło
template
znacznik, domyślnie przedrostek dyrektyw kątowych z * tworzy znacznik szablonu. więc oba są takie same[ngIf] and *ngIf
*ngIf
masz element wewnątrz szablonu, nie masz go, jeśli napiszesztemplate
siebie. W pewnych okolicznościach dodatkowy element może przeszkadzać.template
tag w środku,tr
/td
tag?*ngIf="foo"
jest równoważne z<template [ngIf]="foo">
tagiem opakowującym . Krótko mówiąc,template
+[]
==*
, więc[]
! =*
.*
ma sens w każdym elemencie z wyjątkiemtemplate
.Nie możesz umieścić
div
bezpośrednio w środkutr
, to spowodowałoby nieprawidłowy HTML.tr
może zawierać tylko elementtd
/th
/table
, a wewnątrz nich możesz mieć inne elementy HTML.Możesz nieznacznie zmienić kod HTML, aby mieć
*ngFor
nad sobątbody
i miećngIf
nadtr
sobą, jak poniżej.źródło